共用方式為


啟用外部Hive中繼存放區的Hive中繼存放區同盟

重要

這項功能處於 公開預覽版

本文說明如何將外部 Hive 中繼存放區聯邦化,以便您的組織可以透過 Unity Catalog 使用 Hive 中繼存放區的資料表。

如需了解 Hive 中繼資料存放區聯盟的概觀,請參閱 Hive 中繼資料存放區聯盟:啟用 Unity Catalog 以管理在 Hive 中繼資料存放區中註冊的資料表

開始之前

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

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

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

在此步驟中,您會建立 連線,這是一個 Unity Catalog 中的可保護物件,指定用來存取資料庫系統的路徑和憑證,在此案例中為您的 Hive 中繼存放區。

要求

您必須具備下列條件:

  • 用戶名稱和密碼,用來授與用於承載 Hive 中繼存放區的資料庫系統的存取權。
  • 資料庫的 URL(主機和埠)。
  • 資料庫名稱。
  • Unity 目錄中繼存放區上的 CREATE CONNECTION 許可權。 中繼存放區管理員預設具有此許可權。

建立連線

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

注意

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

目錄瀏覽器

  1. 在 Azure Databricks 工作區中,按兩下 [目錄] 圖示目錄

  2. 在 [快速存取] 頁面上,按兩下 [[新增資料] > [新增連線]

  3. 輸入使用者友好的 連線名稱

  4. 選取 連線類型Hive 中繼存放區外部的中繼存放區類型

  5. 輸入主機資料庫的下列 認證 相關的屬性。

    • 主機:例如,mysql-demo.lb123.us-west-2.rds.amazonaws.com
    • 端口:例如,3306
    • 使用者:例如,mysql_user
    • 密碼:例如,password123
  6. 輸入下列 主機資料庫的連線詳細數據

    • 版本:支援的 Hive 中繼存放區版本包括 0.13 和 2.3。
    • 資料庫:您要連線的資料庫名稱。
    • 資料庫類型:例如,MySQL
  7. (選擇性)新增批注。

    只有當您不想使用預設位置時,才需要此位置。

  8. 點擊 建立

SQL

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

CREATE CONNECTION <connection-name> TYPE hive_metastore
OPTIONS (
  host '<hostname>',
  port '<port>',
  user '<user>',
  password '<password>',
  database '<database-name>',
  db_type 'MYSQL',
  version '2.3',
);

只有在您不想使用Hive中繼存放區的預設Hive倉儲目錄位置時,才包含 warehouse_directory

建議您使用 Azure Databricks 機密 來取代純文本字串,用於如認證等的敏感數值。 例如:

CREATE CONNECTION <connection-name> TYPE hive_metastore
OPTIONS (
  host '<hostname>',
  port '<port>',
  user secret ('<secret-scope>','<secret-key-user>'),
  password secret ('<secret-scope>','<secret-key-password>'),
  database '<database-name>',
  db_type 'MYSQL',
  version '2.3'
)

如果您必須在 Notebook SQL 命令中使用純文本字符串,請避免因特殊字符(如 $)而截斷字符串,應使用 \來逸出這些特殊字符。 例如:\$

如需設定秘密的相關信息,請參閱 秘密管理

步驟 2:在 Hive 中繼存放區中建立數據的外部位置

在此步驟中,您會在 Unity 目錄中設定外部位置,以控管存放在外部 Hive 中繼存放區中註冊數據的雲端儲存位置存取權。

外部位置 是 Unity Catalog 安全性實體物件,可將 儲存憑證 與雲端儲存容器路徑產生關聯。 請參閱 外部位置和記憶體認證

要求

如需雲端儲存和 Azure Databricks 許可權需求,請參閱「開始之前」中的 建立外部位置以將雲端儲存連線至 Azure Databricks

建立外部位置的選項

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

在外部位置上啟用後援模式

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

當外部位置處於後援模式時,系統會先檢查查詢者對 Unity Catalog 的許可權,如果未能成功,則會退回使用現有的叢集或筆記本範圍認證,例如實例設定檔或 Apache Spark 組態屬性,以確保現有的工作負載能夠不中斷地繼續執行。

當您在移轉舊版工作負載的過程中,備援模式相當便利。 更新工作負載以使用 Unity 目錄許可權成功執行之後,您應該停用後援模式,以防止使用舊版叢集範圍認證來略過 Unity 目錄數據控管。

您可以使用 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 Metastore 同步處理。

需求

權限要求

若要建立外部目錄:

  • 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. 輸入 目錄名稱,然後選擇 外部目錄類型

  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 Metastore 中繼資料填充聯邦目錄。

    每當使用者或工作流程與聯合目錄互動時,中繼資料就會從 Hive 中繼存放區同步。 第一次操作會將目錄填入 Unity Catalog 並在目錄總管界面中顯示其內容。 您可以在目錄總管中選取並啟動支援 的計算資源,以填充目錄。 您必須是目錄擁有者(因為您是目錄的建立者)或是具有 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 中繼資料庫同步。

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