共用方式為


在另一個 Databricks 工作區上執行同盟查詢

重要

這項功能處於公開預覽狀態

本文說明如何設定 Lakehouse 同盟,以在另一個 Databricks 工作區中對 Databricks 數據執行同盟查詢。 若要深入瞭解 Lakehouse 同盟,請參閱 什麼是 Lakehouse 同盟

重要

Databricks-to-Databricks Lakehouse 同盟是針對另一個 Databricks 工作區 Hive 或 AWS Glue 中繼存放區所管理之數據執行查詢的好工具。 在大部分的其他案例中,其他 Azure Databricks 工作流程更有效率:

  • 如果 Azure Databricks 工作區共用相同的 Unity 目錄中繼存放區,您可以使用標準 Unity 目錄查詢和數據控管工具來管理跨工作區查詢。
  • 如果您想要 只讀 存取連結至不同 Unity 目錄中繼存放區之 Databricks 工作區中的數據,無論是在 Azure Databricks 帳戶中,差異共用是較佳的選擇。

在上述任一案例中,不需要設定 Lakehouse 同盟。

若要使用 Lakehouse 同盟連線至另一個工作區中的 Databricks 目錄,您必須在 Azure Databricks Unity 目錄中繼存放區中建立下列專案:

  • Databricks 工作區中的叢集或 SQL 倉儲。
  • 叢集或 SQL 倉儲的連線
  • Unity 目錄中繼存放區中的外部目錄,可鏡像叢集或 SQL 倉儲存取的其他 Databricks 目錄,讓您可以使用 Unity 目錄查詢語法和數據控管工具來管理 Azure Databricks 使用者存取數據。

開始之前

工作區需求:

  • 已啟用 Unity 目錄的工作區。

計算需求:

  • 從 Databricks 執行時間叢集或 SQL 倉儲到目標資料庫系統的網路連線。 請參閱 Lakehouse 同盟的網路建議。
  • Azure Databricks 叢集必須使用 Databricks Runtime 13.3 LTS 或更新版本,以及共用或單一使用者存取模式。
  • SQL 倉儲必須是 Pro 或無伺服器。

需要的權限:

  • 若要建立連線,您必須是中繼存放區管理員或具有 CREATE CONNECTION 附加至工作區之 Unity 目錄中繼存放區許可權的使用者。
  • 若要建立外部目錄,您必須擁有 CREATE CATALOG 中繼存放區的許可權,而且必須是聯機的擁有者,或擁有 CREATE FOREIGN CATALOG 連線的許可權。

後續每個以工作為基礎的區段會指定其他許可權需求。

您也必須在 Azure Databricks 工作區中擁有用來設定連線的作用中叢集或 SQL 倉儲。

建立連線

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

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

目錄總管

  1. 在您的 Azure Databricks 工作區中,按兩下 目錄圖示[目錄]。
  2. 在左窗格中,展開 [外部數據] 功能表,然後選取 [連線]。
  3. 按兩下 [ 建立連線]。
  4. 輸入使用者易記 連線 名稱
  5. 選取 Databricks連線 類型
  6. 輸入其他 Databricks 實例的下列連線屬性。
    • 主機:工作區實例名稱。 若要瞭解如何取得工作區實例名稱,請參閱 取得工作區對象的標識碼。
    • HTTP 路徑:SQL 倉儲的 HTTP 路徑。 若要取得路徑,請移至提要字段中的 SQL SQL 倉儲、選取 SQL > 倉儲、移至 [連線 詳細數據] 索引標籤,然後複製 HTTP 路徑的值
    • 個人存取令牌:可存取目標工作區的 Azure Databricks 個人存取令牌。 若要瞭解如何取得令牌,請參閱 Azure Databricks 個人存取令牌驗證。 針對連線,Databricks 建議針對服務主體使用個人存取令牌。
  7. (選擇性)按兩下 [ 測試連線 ] 以確認其運作正常。
  8. (選擇性)新增批注。
  9. 按一下 [建立]

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>')
)

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

建立外部目錄

外部目錄會鏡像外部 Databricks 工作區中的目錄,讓您可以查詢和管理該外部 Databricks 目錄中數據的存取權,就好像它是您自己工作中的目錄一樣。 若要建立外部目錄,您可以使用已定義的外部 Databricks 工作區連線。

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

必要許可權:CREATE CATALOG 中繼存放區的許可權,以及聯機的擁有權或 CREATE FOREIGN CATALOG 連線的許可權。

目錄總管

  1. 在您的 Azure Databricks 工作區中,按兩下 目錄圖示[目錄]。
  2. 按兩下 [ 建立目錄 ] 按鈕。
  3. 在 [建立新的目錄] 對話框中,輸入目錄的名稱,然後選取 [外部類型]。
  4. 選取 連線以提供您要鏡像作為 Unity 目錄目錄的數據庫存取權。
  5. 輸入目標 Databricks 目錄 名稱。
  6. 按一下 [建立]

Sql

在筆記本或 Databricks SQL 編輯器中執行下列 SQL 命令。 括弧中的項目是選擇性專案。 取代佔位元值:

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 已停用,則不支援):+、-、*、% /
  • 下列其他運算符: ^, |, ~
  • 排序,搭配限制使用時

不支援下列下推:

  • 聯結
  • Windows 函式