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