在 DBFS 根目錄中建立資料的外部位置
本文說明如何在 Unity 目錄中設定外部位置,以控管您 DBFS 根目錄 儲存位置的存取權。 雖然 Databricks 建議不要將數據儲存在 DBFS 根記憶體中,但由於舊版做法,您的工作區可能會這麼做。
外部位置 是 Unity Catalog 可設定安全對象,將儲存認證與雲端物件儲存容器產生關聯。 外部位置可用來定義受控數據表和磁碟區的受控儲存位置,以及控管對包含外部數據表和外部磁碟區的儲存位置存取。
如果您的工作區本機、舊版 Azure Databricks Hive 中繼存放區的資料儲存在 DBFS 根目錄中,而且您想要將您的舊版 Hive 中繼存放區聯邦化,以便您的小組可以使用 Unity Catalog 來操作 Hive 中繼存放區的數據表,您必須建立一個外部位置。 請參閱 Hive 中繼存放區同盟:啟用 Unity 目錄來管理在 Hive 中繼存放區中註冊的數據表, 和 為舊版工作區 Hive 中繼存放區啟用 Hive 中繼存放區同盟。
在你開始之前
若要建立 DBFS 根目錄的外部位置,您必須在 Unity 目錄中定義 記憶體認證,以存取 DBFS 根目錄的雲端儲存位置。 如果您還沒有,系統可以在建立外部位置的過程中為您建立一個。
權限需求:
您必須在中繼資料存放庫上擁有
CREATE STORAGE CREDENTIAL
和CREATE EXTERNAL LOCATION
許可權。 中繼存放區管理員預設具有這些許可權。注意
如果 DBFS 根目錄儲存位置的儲存憑證已經存在,則建立外部位置的使用者不需要
CREATE STORAGE CREDENTIAL
,但需要在儲存憑證和中繼存取庫上具備CREATE EXTERNAL LOCATION
。您必須是工作區管理員,才能讓系統在建立外部位置時為您建立儲存憑證。
如果提供 DBFS 根記憶體位置存取權的記憶體認證已經存在,而且您在記憶體認證和中繼存放區上都有
CREATE EXTERNAL LOCATION
,您就不需要是工作區管理員。
建立外部位置
您可以使用目錄總管來建立 DBFS 根目錄的外部位置。
在側邊欄中,點擊 目錄。
點選[外部資料 >]和[建立外部位置]。
輸入 外部位置名稱。
在 [
URL ] 底下,單擊 [從 DBFS 掛載點 複製],然後選擇 [從 DBFS 根目錄複製 ]。 URL 和子路徑欄位會填入 DBFS 根目錄的雲端記憶體路徑。
重要
當您為 DBFS 根目錄建立外部位置時,您必須使用通往 DBFS 根目錄位置的子路徑,而不是指向整個儲存桶的路徑。 子路徑會預先填入
user/hive/warehouse
,這是Hive中繼存放區資料表的預設儲存位置。 如果您想要對 DBFS 根目錄中的數據進行更精細的訪問控制,您可以針對 DBFS 根目錄中的子路徑建立個別的外部位置。警告
您的 DBFS 根目錄可能會儲存在 Azure Blob 記憶體中,而不是 Azure Data Lake Storage Gen2。 這些位置是使用不允許目錄或檔案層級控件的
wasb
驅動程式來存取。 因此,Unity 目錄只能在容器層級強制執行訪問控制,這表示如果使用者使用具有單一使用者存取模式的叢集,則具有此外部位置存取權的使用者可能會存取相同容器中的其他數據。 若要避免這種情況,請強制使用共用存取模式叢集、SQL 倉儲或無伺服器計算。選取授與 DBFS 根雲端儲存位置存取權的記憶體認證,如果尚未定義,請按兩下 [+ 建立新的記憶體認證。
若要建立記憶體認證,請選取 DBFS 根的 認證類型。 儲存外部位置時,會自動建立記憶體認證。
(選擇性)新增批注。
(選擇性)按一下 [進階選項],然後啟用 後援模式。
回退模式適用於遺留工作負載移轉案例。 請參閱 在外部位置上啟用後援模式。
按一下 建立。
移至 [權限] 標籤,以授予使用外部位置的權限。
- 點擊 授與。
- 在 [主體] 字段中,選取 [使用者、群組或服務主體],然後選取您想要授予的權限。
- 按兩下 [授與]。
(選擇性)設定可存取此外部位置的工作區。
根據預設,任何使用此 Unity 目錄中繼存放區之工作區上的使用者都可以存取此位置中的數據。 您可以限制特定工作區的存取權。 Databricks 建議限制 DBFS 根目錄的工作區存取權。
請參閱 將外部位置系結至一或多個工作區。