連接外部資料庫與目錄

Azure Databricks 提供多種選項,讓你查詢並存取外部資料庫與目錄中的資料,無需遷移資料。 根據您的存取模式、治理需求、寫入需求及計算偏好來選擇方法。

選擇一種方法

下表比較查詢聯盟與目錄聯盟,幫助您選擇合適的方法。

Approach Description 查詢執行 寫入支援 Governance 最適合用於
查詢同盟 使用 JDBC 對外部關聯式資料庫執行聯邦查詢,並透過外部目錄實現自動查詢下推和 Unity Catalog 治理。 透過 JDBC 下推至外部資料庫。 查詢同時執行於 Azure Databricks 與遠端運算系統。 不支援(唯讀)。 Unity Catalog 外來目錄,具備表格層級存取控制。 臨機報表、BI,以及為概念驗證而存取營運資料庫。
目錄同盟 連接外部目錄平台(例如 Hive Metastore、AWS Glue 或 Snowflake),這樣你可以直接在物件儲存中查詢他們的資料。 它僅直接在 Azure Databricks 的物件儲存運算中執行。 比查詢聯邦更具成本效益,且效能更佳。 不支援(唯讀)。 Unity Catalog 外來目錄,具備表格層級存取控制。 是逐步遷移到 Unity Catalog,還是維持長期混合模式,資料存放在外部目錄中。

Lakehouse 同盟

Lakehouse Federation 是 Azure Databricks 查詢聯盟平台。 它透過 Unity Catalog 的外部目錄提供受控且唯讀的外部資料存取,並具備自動查詢推送及表格層級的細緻存取控制。

湖屋聯盟有兩種類型:查詢聯盟與目錄聯盟。

查詢聯邦與目錄聯邦的比較

下表說明查詢聯盟與目錄聯盟的主要差異。

Approach 查詢路徑 用例 步驟概觀
查詢同盟 Unity 目錄查詢會使用 JDBC 向下推送至外部資料庫。 查詢同時在 Azure Databricks 與遠端運算中執行。
  • 您需要對儲存在外部資料庫中的操作數據進行即時報告或概念驗證存取。
  • 您想要將數據移動降到最低,並維持對外部系統的即時存取。

當您的來源同時支援 Lakehouse Federation 和 Lakeflow Connect,Azure Databricks 會建議在優先考量較大的資料量和較低延遲時使用 Lakeflow Connect。
  • 使用您的存取認證和 JDBC URL 在 Unity 目錄中建立連線。
  • 使用連線建立外部目錄。
  • 將許可權授與外部目錄中數據表上的使用者。
  • 執行查詢。 這些會向下推送至外部資料庫。
目錄同盟 Unity 目錄查詢會直接存取物件記憶體中的外部數據表。 目錄同盟適用於支援直接存取其目錄和記憶體服務的平臺。 查詢僅在 Azure Databricks 運算上執行,意味著目錄聯盟比查詢聯盟更具成本效益且效能最佳化。
  • 你正在遷移至 Unity Catalog,但需要逐步導入由外部目錄管理的資料。
  • 您想要長期混合式模型,其中某些數據會保留在外部目錄中,而某些數據則由 Unity 目錄管理。
  • 在 Unity 目錄中建立連線以存取外部目錄。
  • 建立儲存憑證和表格路徑的外部位置。
  • 使用連線和外部位置建立外來目錄。
  • 將許可權授與外部目錄中數據表上的使用者。
  • 執行查詢。 這些會直接針對物件記憶體執行。

支持的數據源

使用查詢同盟連線到下列來源:

使用目錄同盟連線到下列來源:

Spark 資料來源

Spark Data Source API 讓你能直接從 Azure Databricks 讀取和寫入外部資料庫。 當 Lakehouse Federation 不支援你的原始碼、需要寫入權限,或需要更多查詢執行與平行化控制時,才會使用它。

Databricks Runtime 包含針對常見資料庫如 PostgreSQL、SQL Server、MySQL、Snowflake 和 Redshift 的捆綁連接器。 對於任何相容 JDBC 的資料庫,你可以使用 JDBC Unity 目錄連線,帶來你自己的驅動程式,並集中管理憑證。 你也可以在專用叢集上安裝第三方連接器,或使用 PySpark DataSource API 在 Python 中建立完全客製化的連接器。

關於設定說明及完整細節,請參閱 Spark 資料來源

其他資源