共用方式為


啟用舊版工作區 Hive 中繼存放區的 Hive 中繼存放區同盟

本文說明如何將傳統 Azure Databricks Hive 中繼存放區聯合,使您的組織可以使用 Unity Catalog 與 Hive 中繼存放區表格搭配運作。

如需Hive中繼存放區同盟的概觀,請參閱 Hive中繼存放區同盟:啟用 Unity 目錄來管理 Hive 中繼存放區中註冊的數據表

開始之前

檢閱Hive中繼存放區同盟所支援的服務與功能清單:需求、支援的功能,以及的限制。

下面每個步驟都會列出特定需求。

步驟 1:將 Unity 目錄連線到 Hive 中繼存放區

在此步驟中,您會建立 連線,這是一個 Unity Catalog 可安全的物件,指定了用來存取資料庫系統的路徑和認證,在此情況下,適用於您的 Azure Databricks 工作區的舊版 Hive 中繼存放區。

要求

  • Unity 目錄中繼存放區上的 CREATE CONNECTION 許可權。

建立連線

連接會指定用來存取外部資料庫系統的路徑和認證。 若要建立連線,您可以在 Azure Databricks 筆記本或 Databricks SQL 查詢編輯器中使用目錄總管或 CREATE CONNECTION SQL 命令。

注意

您也可以使用 Databricks REST API 或 Databricks CLI 來建立連線。 請參閱 POST/api/2.1/unity-catalog/connectionsUnity Catalog 命令

需要 許可權: 具有 CREATE CONNECTION 許可權的中繼存放區系統管理員或使用者。

目錄瀏覽器

  1. 在 Azure Databricks 工作區中,按一下 目錄圖示目錄
  2. 在 [快速存取] 頁面上,按兩下 [[新增資料] > [新增連線]
  3. 輸入使用者易記 連線名稱
  4. 選取 連線類型Hive 中繼存放區中繼存放區類型內部
  5. (選擇性)新增批注。
  6. 點擊 建立

SQL

在筆記本或 Databricks SQL 查詢編輯器中執行下列命令。

CREATE CONNECTION IF NOT EXISTS <connection-name> TYPE hive_metastore
  OPTIONS (builtin true);

步驟 2:為內部舊版 Hive 中繼存放區中的數據建立外部位置

在此步驟中,您會在 Unity Catalog 中設定外部位置,以管理對註冊於您舊版內部 Hive 中繼資料庫中的數據所存放的雲端儲存位置的存取權。

外部位置 是 Unity Catalog 可保護的物件,將 儲存憑證 與雲端儲存容器路徑關聯。 請參閱 外部位置和儲存憑證

要求

如需雲端儲存和 Azure Databricks 權限需求,請參閱 建立外部位置以將雲端儲存連線至 Azure Databricks

如果您要為工作區的舊版 DBFS 根目錄建立外部位置,請改為查看 中建立 DBFS 根目錄資料的外部位置 「在開始之前的步驟」。

建立外部位置的選項

Databricks 建議在 Unity 目錄中建立外部位置的程序取決於您的情況:

在外部地點啟用後援模式

當您在 Unity 目錄中建立外部位置時,當您在已啟用 Unity 目錄的計算上執行查詢時,會強制執行該外部位置所代表路徑的存取權(單一使用者、共用或 SQL 倉儲)。 這可能會中斷現有的工作負載,這些工作負載沒有正確的 Unity 資料目錄許可權來存取資料路徑。

當外部位置處於後援模式時,系統會先檢查查詢主體在位置上的 Unity Catalog 許可權,若該檢查未通過,則會自動回退使用現有的叢集或筆記本範圍的憑證,例如實例配置檔或 Apache Spark 組態屬性,以確保現有的工作負載繼續不間斷地運行。

在移轉舊版工作負載的過程中,備援模式非常方便。 在您更新工作負載以成功使用 Unity Catalog 權限運行後,應該停用後援模式,以防止使用舊有的叢集範圍憑證來繞過 Unity Catalog 的數據治理。

您可以使用「Catalog Explorer」或 Unity Catalog 外部位置的 REST API 啟用備援模式。

需要 許可權:外部位置的擁有者。

目錄瀏覽器

  1. 在 Azure Databricks 工作區中,按一下 目錄圖示目錄
  2. 在 [快速存取] 頁面上,點擊 [外部資料] >
  3. 選擇您要更新的外部位置。
  4. 開啟 [後援模式] 切換,然後單擊 [啟用] 以確定。

應用程式介面

下列 curl 範例示範如何在建立外部位置及更新現有外部位置時啟用後援模式。

建立新的外部位置:

curl -X POST -H 'Authorization: Bearer <token>' \
https://<workspace-URL>/api/2.1/unity-catalog/external-locations \
--data
'{
  "name": "fallback_mode_enabled_external_location",
  "url": "abfss://container-name@storage-account.dfs.core.windows.net/external_location_container/url",
  "credential_name": "external_location_credential",
  "fallback": true
  "skip_validation": true
}'

更新外部位置:

curl -X PATCH \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
https://<workspace-URL>/api/2.1/unity-catalog/external-locations/<external-location-name> \
--data
 '{
   "comment": "fallback mode enabled",
   "fallback": true
  }'

步驟 3:建立同盟目錄

在此步驟中,您會使用您在步驟 1 中建立的連線,在 Unity 目錄中建立同盟目錄,指向您在步驟 2 中建立的外部位置。 聯邦目錄是一種 外部目錄類型,這是在 Unity Catalog 中的安全性物件,可反映外部數據系統中的資料庫或目錄,使您能夠在 Azure Databricks 工作區中對這些數據執行查詢,並由 Unity Catalog 管理存取權。 在此情況下,鏡射目錄是您在 Hive 元存儲庫中註冊的資料。

每當使用者或工作流程與同盟目錄互動時,元數據就會從Hive中繼存放區同步處理。

要求

許可權需求

若要建立外部目錄:

  • Unity 目錄中繼存放區上的 CREATE CATALOG 許可權。
  • 連線的擁有權或連線上的 CREATE FOREIGN CATALOG 許可權。
  • 若要輸入外部目錄的授權路徑,您必須在涵蓋這些路徑的外部位置上具有 CREATE FOREIGN SECURABLE 許可權。 根據預設,外部位置的擁有者具有此許可權。

若要與外國目錄合作:

  • 目錄或 USE CATALOG 的擁有權

計算需求

  • 若要使用目錄總管建立目錄:不需要計算。
  • 若要使用 SQL 建立目錄,需要 Databricks Runtime 13.3 LTS 或更高版本。
  • 若要使用目錄,請在 Databricks Runtime 13.3 LTS、14.3 LTS、15.1 或更新版本的共用叢集上工作。

建立國外目錄

若要建立外部目錄,您可以在 Azure Databricks 筆記本或 SQL 查詢編輯器中使用目錄總管或 CREATE FOREIGN CATALOG SQL 命令。

注意

您也可以使用 Unity 目錄 API。 請參閱 Databricks REST API 參考中的 建立目錄

  1. 在 Azure Databricks 工作區中,按兩下 [目錄] 圖示目錄,以開啟 [目錄總管]。

  2. 在 [快速存取] 頁面上,按一下 [新增資料 按鈕],然後選擇 [新增目錄]。

  3. 輸入 目錄名稱,然後選取目錄 類型Foreign

  4. 從下拉式清單中選取您在步驟 1 中建立 連線

  5. 在 [授權路徑] 欄位中,輸入您在步驟 2 中定義為外部位置的雲端儲存位置路徑。 例如,abfss://container@storageaccount.dfs.core.windows.net/demo,abfss://container@storageaccount.dfs.core.windows.net/depts/finance

    授權路徑是專門為聯邦目錄而新增的一層安全性保障。 請參閱 什麼是授權路徑?

  6. 點擊 建立

  7. (選擇性)按一下 設定 開啟精靈,引導您授予目錄的權限並增加標籤。 您也可以稍後執行這些步驟。

    請參閱 在 Unity Catalog 中管理許可權,將標籤套用至 Unity Catalog 可保護的物件

  8. (選擇性)將目錄系結至特定工作區。

    根據預設,可以從連結至 Unity 目錄中繼存放區的任何工作區存取目錄(受限於用戶許可權)。 如果您想要只允許來自特定工作區的存取權,請移至 [工作區] 索引標籤並指派工作區。 請參閱 限制特定工作區的目錄存取

  9. 使用 Hive 中繼存放區的元數據填充聯合目錄。

    每當使用者或工作流程與聯邦目錄互動時,元數據就會從 Hive 中繼存放區同步。 第一次操作會在 Unity 目錄中填入目錄,並在目錄瀏覽器 UI 中顯示其內容。 您可以在目錄瀏覽器中選取並啟動 支援的計算資源,以便填充目錄。 您必須是目錄擁有者(由於您建立了目錄,因此自動成為擁有者)或擁有 USE CATALOG 權限的使用者。

    在筆記本或 SQL 查詢編輯器中執行下列 SQL 命令。 括弧中的項目是選擇性專案。 替換佔位符值:

    • <catalog-name>:Azure Databricks 中目錄的名稱。
    • <connection-name>:您在步驟 1 中建立的連接物件名稱。
    • <path1>,<path2>:您在步驟 2 中定義為外部位置的雲端儲存位置路徑。 例如,abfss://container@storageaccount.dfs.core.windows.net/demo,abfss://container@storageaccount.dfs.core.windows.net/depts/finance。 授權路徑是僅限同盟目錄的新增安全性層。 請參閱 什麼是授權路徑?
    CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
    OPTIONS (authorized_paths '<path1>,<path2>');
    

    每當使用者或工作流程與聯邦目錄互動時,就會從Hive中繼存放區同步元數據。

請參閱 管理及使用外部目錄