啟用外部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 指令。
目錄瀏覽器
在 Azure Databricks 工作區中,按兩下 目錄。
在 [快速存取] 頁面上,按兩下 [[新增資料] > [新增連線]。
輸入使用者友好的 連線名稱。
選取
連線類型 的Hive 中繼存放區 和外部的中繼存放區類型 。 輸入主機資料庫的下列 認證 相關的屬性。
-
主機:例如,
mysql-demo.lb123.us-west-2.rds.amazonaws.com
-
端口:例如,
3306
-
使用者:例如,
mysql_user
-
密碼:例如,
password123
-
主機:例如,
輸入下列 主機資料庫的連線詳細數據。
- 版本:支援的 Hive 中繼存放區版本包括 0.13 和 2.3。
- 資料庫:您要連線的資料庫名稱。
- 資料庫類型:例如,MySQL。
(選擇性)新增批注。
只有當您不想使用預設位置時,才需要此位置。
點擊 建立。
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 目錄中建立外部位置的程序取決於您的情況:
- 如果您要將 Hive 中繼存放區聯合以便將數據儲存在
DBFS 掛載 ,請使用 Catalog Explorer 建立外部位置,並使用 [從 DBFS 掛載 複製] 選項。 請參閱 使用目錄總管手動建立外部位置 或 在 DBFS 根目錄中為資料建立外部位置。 - 否則,您可以使用目錄總管或 SQL 命令。 請參閱 透過目錄檢視器手動建立外部位置 或 透過 SQL 建立外部位置。
在外部位置上啟用後援模式
當您在 Unity 目錄中建立外部位置時,當您在已啟用 Unity 目錄的計算上執行查詢時,會強制執行該外部位置所代表路徑的存取權(單一使用者、共用或 SQL 倉儲)。 這可能會中斷現有的工作負載,因為這些工作負載沒有正確的 Unity Catalog 許可權來存取該路徑。
當外部位置處於後援模式時,系統會先檢查查詢者對 Unity Catalog 的許可權,如果未能成功,則會退回使用現有的叢集或筆記本範圍認證,例如實例設定檔或 Apache Spark 組態屬性,以確保現有的工作負載能夠不中斷地繼續執行。
當您在移轉舊版工作負載的過程中,備援模式相當便利。 更新工作負載以使用 Unity 目錄許可權成功執行之後,您應該停用後援模式,以防止使用舊版叢集範圍認證來略過 Unity 目錄數據控管。
您可以使用 Catalog Explorer 或 Unity Catalog 外部位置 REST API 來啟用後援模式。
所需 許可權:外部位置的擁有者。
目錄探索器
- 在 Azure Databricks 工作區中,按一下 目錄。
- 在 [快速存取] 頁面上,點擊 [外部資料] >。
- 選擇您要更新的外部位置。
- 開啟 [後援模式] 切換,然後按兩下 [啟用] 以確認。
應用程式介面
下列 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 參考中的 建立目錄。
在 Azure Databricks 工作區中,按兩下 目錄,以開啟 [目錄總管]。
在 [快速存取] 頁面上,點擊 [新增資料],然後選取 [新增目錄]。
輸入 目錄名稱,然後選擇 外部目錄類型。
從下拉式清單中選取您在步驟 1 中建立 連線。
在 [授權路徑] 欄位中,輸入您在步驟 2 中定義為外部位置的雲端儲存位置路徑。 例如,
abfss://container@storageaccount.dfs.core.windows.net/demo,abfss://container@storageaccount.dfs.core.windows.net/depts/finance
。授權路徑是僅限於聯合目錄的額外安全層。 請參閱 什麼是授權路徑?。
按一下 建立。
(可選)單擊 [設定] 開啟精靈,引導您授予目錄的許可權並新增標籤。 您也可以稍後執行這些步驟。
請參閱 在 Unity Catalog 中管理權限,以及 將標籤套用至 Unity Catalog 的安全性物件。
(選擇性)將目錄系結至特定工作區。
根據預設,可以從連結至 Unity 目錄中繼存放區的任何工作區存取目錄(受限於用戶許可權)。 如果您想要只允許來自特定工作區的存取權,請移至 [工作區] 索引標籤並指派工作區。 請參閱 限制特定工作區的目錄存取。
使用 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 中繼資料庫同步。
-
請參閱 管理及使用外部目錄。