本文說明如何設定 Lakehouse 同盟,以在另一個 Databricks 工作區中對 Databricks 數據執行同盟查詢。 若要深入了解 Lakehouse 同盟,請參閱什麼是 Lakehouse 同盟?。
重要
Databricks-to-Databricks Lakehouse 同盟是針對另一個 Databricks 工作區 Hive 或 AWS Glue 中繼存放區所管理之數據執行查詢的好工具。 在大部分的其他案例中,其他 Azure Databricks 工作流程更有效率:
- 如果 Azure Databricks 工作區共用相同的 Unity 目錄中繼存放區,您可以使用標準 Unity 目錄查詢和數據控管工具來管理跨工作區查詢。
- 如果您想要 只讀 存取 Azure Databricks 帳戶中或其他帳戶連結到不同 Unity Catalog 中繼存放區的 Databricks 工作區中的資料,Delta Sharing 是較佳的選擇。
在上述任一案例中,不需要設定 Lakehouse 同盟。
若要使用 Lakehouse Federation 連線至另一工作區中的 Databricks 目錄,您必須在 Azure Databricks Unity Catalog 中繼資料儲存庫中建立以下項目:
- Databricks 工作區中的叢集或 SQL 倉儲。
- 與叢集或 SQL 倉儲的連線。
- Unity 目錄中繼存放區中的 外部目錄 ,可鏡像叢集或 SQL 倉儲存取的其他 Databricks 目錄,讓您可以使用 Unity 目錄查詢語法和數據控管工具來管理 Azure Databricks 使用者存取數據。
開始之前
工作區需求:
- 已為 Unity Catalog 啟用了工作區。 2023 年 11 月 9 日之後建立的工作區將自動啟用 Unity Catalog,包括自動進行 metastore 配置。 除非你的工作區早於自動啟用且還沒啟用 Unity Catalog,否則你不需要手動建立元商店。 請參閱 自動啟用 Unity 目錄。
計算需求:
- 計算資源與目標資料庫系統之間的網路連接。 請參閱 Lakehouse 同盟的網路建議。
- Azure Databricks 計算必須使用 Databricks Runtime 13.3 LTS 或更新版本和 標準 或 專用 存取模式。
- SQL 倉儲必須是專業或無伺服器,且必須使用 2023.40 或更新版本。
所需的權限:
- 若要建立連線,您必須是中繼存放區系統管理員,或是具有附加至工作區之 Unity 目錄中繼存放區
CREATE CONNECTION許可權的使用者。 在自動啟用 Unity 目錄的工作區中,工作區管理員預設擁有此CREATE CONNECTION權限。 - 若要建立外來目錄,您必須具有中繼存放區的
CREATE CATALOG許可權,並且必須是連線的擁有者或具有該連線的CREATE FOREIGN CATALOG特權。 在自動啟用 Unity 目錄的工作區中,工作區管理員預設擁有此CREATE CATALOG權限。
在後續每個以任務為導向的章節中,將會指定額外的權限需求。
您也必須在 Azure Databricks 工作區中擁有用來設定連線的作用中叢集或 SQL 倉儲。
建立連線
連接會指定用來存取外部資料庫系統的路徑和認證。 若要建立連線,您可以在 Azure Databricks 筆記本或 Databricks SQL 查詢編輯器中使用目錄總管或 CREATE CONNECTION SQL 命令。
注意
您也可使用 Databricks REST API 或 Databricks CLI 來建立連線。 請參閱 POST /api/2.1/unity-catalog/connections 和 Unity Catalog 命令。
需要的權限:具有 CREATE CONNECTION 權限的中繼存放區系統管理員或使用者。
目錄檢視器
- 在您的 Azure Databricks 工作區中,按兩下
目錄。
- 在「目錄」窗格頂端,按一下「
「新增」圖示,然後從功能表中選取「建立連線」。 - 在 [設定連線精靈] 的 [連線基本概念] 頁面上,輸入使用者易記的 [聯機名稱]。
- 選取 Databricks 的 [連線類型]。
- (選擇性) 新增註解。
- 點選 [下一步]。
- 在 認證 頁面,輸入其他 Databricks 實例的以下連線屬性:
- 主機:工作區實例名稱。 若要瞭解如何取得工作區實例名稱,請參閱 取得工作區對象的標識碼。
- 個人存取令牌:可存取目標工作區的 Azure Databricks 個人存取令牌。 若要瞭解如何取得權杖,請參閱 使用 Azure Databricks 個人存取權杖 (舊版) 進行驗證。 針對連線,Databricks 建議針對服務主體使用個人存取令牌。
- HTTP 路徑:SQL 倉儲的 HTTP 路徑。 若要取得路徑,請移至提要字段中的 SQL SQL 倉儲、選取 SQL > 倉儲 、移至 [ 連線詳細 數據] 索引卷標,然後複製 HTTP 路徑的值。
- 點選 「建立連線」。
- 在 目錄基本設定 頁面上,於其他 Azure Databricks 工作區中輸入一個可映射到此中繼存放區目錄物件的目錄名稱。
- (選擇性)按兩下 [ 測試連線 ] 以確認其運作正常。
- 點選 「建立目錄」。
- 在 [Access] 頁面上,選擇工作區以讓使用者能存取您建立的目錄。 您可以選取 [所有工作區都有存取權],或點擊 [指派給工作區],選取工作區,然後點擊 [指派]。
- 將 擁有者 變更為可以管理目錄中所有物件存取權的人。 開始在文字框中輸入主體,然後點擊搜尋結果中的主體。
- 對目錄授予許可權。 點擊 授權;
- 指定可存取目錄中對象的 主體 。 開始在文字框中輸入主體,然後點擊搜尋結果中的主體。
- 選取 權限預設,以授與每個主體。 根據預設,所有帳戶用戶都會被授與
BROWSE。- 從下拉功能表中選取 [數據讀取器],以授與目錄中物件
read許可權。 - 從下拉功能表中選取 資料編輯器,以授予
read和modify目錄中對象的權限。 - 手動選取要授與的許可權。
- 從下拉功能表中選取 [數據讀取器],以授與目錄中物件
- 請按一下 授權。
- 點選 [下一步]。
- 在 [元數據] 頁面上,請指定標籤的鍵值對。 如需詳細資訊,請參閱在 Unity Catalog 中將標籤套用到可保護的物件。
- (選擇性) 新增註解。
- 點選 儲存。
SQL
在筆記本或 Databricks SQL 查詢編輯器中執行下列命令,並取代下列命令:
-
<connection-name>:您要建立之連線的用戶易記名稱。 -
<workspace-instance>:目標工作區實例。 若要瞭解如何取得工作區實例名稱,請參閱 取得工作區對象的標識碼。 -
<sql-warehouse-path>:SQL 倉儲的 HTTP 路徑。 若要取得路徑,請移至提要字段中的 SQL SQL 倉儲、選取 SQL > 倉儲 、移至 [ 連線詳細 數據] 索引卷標,然後複製 HTTP 路徑的值。 -
<personal-access-token>:可存取目標工作區的 Azure Databricks 個人存取令牌。 若要瞭解如何取得權杖,請參閱 使用 Azure Databricks 個人存取權杖 (舊版) 進行驗證。 針對連線,Databricks 建議您使用服務主體的個人存取令牌。
CREATE CONNECTION <connection-name> TYPE databricks
OPTIONS (
host '<workspace-instance>',
httpPath '<sql-warehouse-path>',
personalAccessToken '<personal-access-token>'
);
建議您針對認證等敏感性值使用 Azure Databricks 秘密 ,而不是純文本字串。 例如:
CREATE CONNECTION <connection-name> TYPE databricks
OPTIONS (
host '<workspace-instance>',
httpPath '<sql-warehouse-path>',
personalAccessToken secret ('<secret-scope>','<secret-key-password>')
)
如需設定祕密的相關資訊,請參閱祕密管理。
建立外部目錄
注意
如果您使用 UI 來建立與數據來源的連線,則會包括外來目錄的建立,而且您可以略過此步驟。
外部目錄會鏡像外部 Databricks 工作區中的目錄,讓您可以查詢和管理該外部 Databricks 目錄中數據的存取權,就好像它是您自己工作中的目錄一樣。 若要建立外部目錄,您可以使用已定義的外部 Databricks 工作區連線。
若要建立外部目錄,您可以在 Azure Databricks 筆記本或 Databricks SQL 查詢編輯器中使用目錄總管或 CREATE FOREIGN CATALOG SQL 命令。 您也可以使用 Databricks REST API 或 Databricks CLI 來建立目錄。 請參閱 POST /api/2.1/unity-catalog/catalogs 和 Unity Catalog 命令。
必要權限:中繼存放區的CREATE CATALOG權限,還有連線的所有權或對連線的CREATE FOREIGN CATALOG特權。
目錄檢視器
在您的 Azure Databricks 工作區中,按一下
以開啟目錄總管。
在 目錄 窗格頂端,按一下
新增 圖示,然後從功能表中選取 新增目錄。或者,從 [ 快速存取] 頁面按兩下 [ 目錄] 按鈕,然後按下 [ 建立目錄 ] 按鈕。
請按照建立目錄中的指示來建立外部目錄。
SQL
在筆記本或 Databricks SQL 編輯器中執行下列 SQL 命令。 括弧中的項目是選擇性的。 替換占位符值:
-
<catalog-name>:為您正在建立的外部目錄命名。 -
<connection-name>:指定數據源、路徑和存取認證的 連接物件 。 -
<external-catalog-name>:您要鏡像的外部 Databricks 工作區中的目錄的名稱。
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (catalog '<external-catalog-name>');
支援的推送執行
所有運算都支援下列下推:
- 篩選
- 投影
- 限制
- 函式:僅支援篩選表達式(字串函式、數學函數、數據、時間和時間戳函式,以及其他函式,例如 Alias、Cast、SortOrder)。
Databricks Runtime 13.3 LTS 及更新版本與 SQL 倉儲計算能力支援下列推下功能:
- 彙總
- 下列布爾運算符:=、、<<=、>、>=、<=>
- 下列數學函數(如果 ANSI 已停用,則不支援):+、-、*、% /
- 下列其他運算符: ^, |, ~
- 排序,當與限制數量搭配使用時
不支援下列下推:
- 聯結
- 視窗函式
資料類型對應
當您使用 Databricks 對 Databricks 同盟時,資料類型通常會一對一對應。 不過,下列資料型別會對應至 StringType:
| 從 | 到 |
|---|---|
ArrayType |
StringType |
IntervalType |
StringType |
MapType |
StringType |
StructType |
StringType |