什麼是 Lakehouse 同盟
重要
這項功能處於公開預覽狀態。
本文介紹 Lakehouse 同盟,此查詢同盟平臺可讓您使用 Azure Databricks 對多個外部數據源執行查詢。 它也會說明如何設定 Lakehouse 同盟 連線 ,並在 Unity 目錄中繼存放區中建立 外部目錄 。
什麼是 Lakehouse 同盟?
Lakehouse Federation 是 Azure Databricks 的查詢同盟平臺。 查詢同盟一詞描述一組功能,可讓用戶和系統對多個數據源執行查詢,而不需要將所有數據遷移至統一系統。
Azure Databricks 使用 Unity 目錄來管理查詢同盟。 您可以使用 Pro SQL 倉儲、無伺服器 SQL 倉儲和 Databricks 執行時間叢集中包含的驅動程式,設定熱門資料庫解決方案的唯讀連線。 Unity 目錄的數據控管和數據譜系工具可確保針對 Azure Databricks 工作區中使用者所做的所有同盟查詢,管理及稽核數據存取。
為什麼要使用 Lakehouse 同盟?
Lakehouse 強調數據的集中儲存,以減少數據備援和隔離。 您的組織在生產環境中可能有許多數據系統,而且您可能會想要查詢連線系統中的數據,原因有很多:
- 臨機操作報告。
- 概念證明工作。
- 新 ETL 管線或報表的探勘階段。
- 在累加移轉期間支援工作負載。
在這些案例中,查詢同盟可讓您更快速地深入解析,因為您可以就地查詢數據,並避免複雜且耗時的 ETL 處理。
Lakehouse Federation 適用於下列情況的使用案例:
- 您不想將數據內嵌至 Azure Databricks。
- 您希望查詢利用外部資料庫系統中的計算。
- 您想要 Unity 目錄介面和數據控管的優點,包括細部訪問控制、數據譜系和搜尋。
Lakehouse 同盟設定概觀
若要使用 Lakehouse 同盟讓數據集可供只讀查詢,請建立下列專案:
- 連接,Unity 目錄中的安全性實體物件,指定存取外部資料庫系統的路徑和認證。
- 外部目錄是 Unity 目錄中的安全性實體物件,可鏡像外部數據系統中的資料庫,可讓您對 Azure Databricks 工作區中的該數據系統執行只讀查詢,並使用 Unity 目錄管理存取權。
支持的數據源
Lakehouse 同盟支援下列資料庫類型的連線:
- MySQL
- PostgreSQL
- Amazon Redshift
- Snowflake
- Microsoft SQL Server
- Azure Synapse (SQL 數據倉儲)
- Google BigQuery
- Databricks
連線需求
工作區需求:
- 已啟用 Unity 目錄的工作區。
計算需求:
- 從 Databricks 執行時間叢集或 SQL 倉儲到目標資料庫系統的網路連線。 請參閱 Lakehouse 同盟的網路建議。
- Azure Databricks 叢集必須使用 Databricks Runtime 13.3 LTS 或更新版本,以及共用或單一使用者存取模式。
- SQL 倉儲必須是 Pro 或無伺服器。
需要的權限:
- 若要建立連線,您必須是中繼存放區管理員或具有
CREATE CONNECTION
附加至工作區之 Unity 目錄中繼存放區許可權的使用者。 - 若要建立外部目錄,您必須擁有
CREATE CATALOG
中繼存放區的許可權,而且必須是聯機的擁有者,或擁有CREATE FOREIGN CATALOG
連線的許可權。
後續每個以工作為基礎的區段會指定其他許可權需求。
建立連線
連接會指定用來存取外部資料庫系統的路徑和認證。 若要建立連線,您可以在 Azure Databricks 筆記本或 CREATE CONNECTION
Databricks SQL 查詢編輯器中使用目錄總管或 SQL 命令。
需要的許可權: 具有許可權的 CREATE CONNECTION
中繼存放區系統管理員或使用者。
目錄總管
在您的 Azure Databricks 工作區中,按兩下
[目錄]。
在左窗格中,展開 [ 外部數據] 功能表,然後選取 [ 連線]。
按兩下 [ 建立連線]。
輸入使用者易記 的連線名稱。
選取 [ 連線類型 ] (資料庫提供者,例如 MySQL 或 PostgreSQL)。
輸入連線屬性(例如主機資訊、路徑和存取認證)。
每個連接類型都需要不同的連線資訊。 請參閱連線類型的文章,列在左側目錄。
(選擇性)按兩下 [ 測試連線 ] 以確認其運作正常。
(選擇性)新增批注。
按一下 [建立]。
SQL
在筆記本或 SQL 查詢編輯器中執行下列命令。 此範例適用於 PostgreSQL 資料庫的連線。 選項會因連線類型而有所不同。 請參閱連線類型的文章,列在左側目錄。
CREATE CONNECTION <connection-name> TYPE postgresql
OPTIONS (
host '<hostname>',
port '<port>',
user '<user>',
password '<password>'
);
建議您針對認證等敏感性值使用 Azure Databricks 秘密 ,而不是純文本字串。 例如:
CREATE CONNECTION <connection-name> TYPE postgresql
OPTIONS (
host '<hostname>',
port '<port>',
user secret ('<secret-scope>','<secret-key-user>'),
password secret ('<secret-scope>','<secret-key-password>')
)
如需設定秘密的相關信息,請參閱 秘密管理。
如需管理現有連線的資訊,請參閱 管理 Lakehouse 同盟的連線。
建立外部目錄
外部目錄會鏡像外部數據系統中的資料庫,讓您可以使用 Azure Databricks 和 Unity 目錄來查詢和管理該資料庫中數據的存取權。 若要建立外部目錄,您可以使用已定義的數據源連線。
若要建立外部目錄,可以在 Azure Databricks 筆記本或 CREATE FOREIGN CATALOG
SQL 查詢編輯器中使用目錄總管或 SQL 命令。
注意
您也可以使用 Unity 目錄 API。 請參閱 Azure Databricks 參考檔。
外部目錄元數據會在每次與目錄互動時同步處理到 Unity 目錄。 如需 Unity 目錄與數據來源之間的資料類型對應,請查看 每個數據源檔的 [資料類型對應 ] 區段。
必要許可權:CREATE CATALOG
中繼存放區的許可權,以及聯機的擁有權或 CREATE FOREIGN CATALOG
連線的許可權。
目錄總管
- 在您的 Azure Databricks 工作區中,按兩下
[目錄] 以開啟 [目錄 總管]。
- 在右上方,按兩下 [ 建立目錄]。
- 遵循在建立目錄中 建立外部目錄的指示。
SQL
在筆記本或 SQL 查詢編輯器中執行下列 SQL 命令。 括弧中的項目是選擇性專案。 取代佔位元值:
<catalog-name>
:Azure Databricks 中目錄的名稱。<connection-name>
:指定數據源、路徑和存取認證的連接物件。<database-name>
:您想要在 Azure Databricks 中鏡像為目錄的資料庫名稱。 MySQL 不需要,其使用兩層命名空間。<external-catalog-name>
: 僅限 Databricks 對 Databricks :您要鏡像的外部 Databricks 工作區中的目錄名稱。 請參閱 建立外部目錄。
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');
如需管理及使用外部目錄的相關信息,請參閱 管理及使用外部目錄。
Lakehouse 同盟和具體化檢視
當您建立具體化檢視時,Databricks 建議使用 Lakehouse Federation 載入外部數據。 請參閱 在 Databricks SQL 中使用具體化檢視。
當您使用 Lakehouse 同盟時,用戶可以參考同盟數據,如下所示:
CREATE MATERIALIZED VIEW xyz AS SELECT * FROM federated_catalog.federated_schema.federated_table;
檢視系統產生的同盟查詢
Lakehouse 同盟會將 Databricks SQL 語句轉譯成可向下推送至同盟數據源的語句。 若要檢視產生的 SQL 語句,請按兩下 [查詢設定檔] 圖形檢視上的外部數據源掃描節點,或執行 EXPLAIN FORMATTED SQL 語句。 如需涵蓋範圍,請參閱每個數據源檔支援的下推一節。
限制
- 查詢是唯讀的。
- 線上的節流是使用 Databricks SQL 並行查詢限制來決定。 每個連線的倉儲之間沒有限制。 請參閱 Pro 和傳統 SQL 倉儲的佇列和自動調整。
- 不支援在 Unity 目錄中具有無效名稱的數據表和架構,而且在建立外部目錄時會由 Unity 目錄忽略。 請參閱限制中的命名規則和限制清單。
- 數據表名稱和架構名稱會轉換成 Unity 目錄中的小寫。 查閱也必須使用小寫名稱。 如果有具有重複小寫名稱的數據表或架構,則只會將其中一個數據表或架構匯入外部目錄。
- 無伺服器 SQL 倉儲上的 Private Link 和靜態 IP 範圍支援無法使用。
- 針對所參考的每個外部數據表,Azure Databricks 會排程遠端系統中的子查詢,以從該數據表傳回數據子集,然後透過單一數據流將結果傳回至一個 Azure Databricks 執行程式工作。
- 單一使用者存取模式僅適用於擁有連線的使用者。
- Lakehouse 同盟無法將外部數據表與 Azure Synapse 連線或 Redshift 連線區分大小寫的標識元同盟。
其他資源
意見反映
https://aka.ms/ContentUserFeedback。
即將推出:我們會在 2024 年淘汰 GitHub 問題,並以全新的意見反應系統取代並作為內容意見反應的渠道。 如需更多資訊,請參閱:提交及檢視以下的意見反映: