整合 Databricks Unity 目錄與 OneLake
此案例顯示如何使用捷徑來整合 Unity 目錄外部 Delta 資料表至 OneLake。 在完成本教學課程之後,您將能夠自動同步 Unity 目錄外部 Delta 資料表至 Microsoft Fabric lakehouse。
必要條件
連線之前,確認您擁有:
- Fabric 工作區。
- 工作區中Fabric lakehouse。
- 在 Azure Databricks 工作區建立的外部 Unity 目錄 Delta 資料表。
設定您的雲端儲存連線
首先,檢查 Unity 目錄資料表使用的 Azure Data Lake Storage Gen2 (ADLS Gen2) 儲存位置。 此雲端儲存連線由 OneLake 捷徑使用。 若要建立雲端連線至適當 Unity 目錄儲存位置:
建立 Unity 目錄資料表使用的雲端儲存連線。 請參閱如何設定 ADLS Gen2 連線。
在建立連線之後,為取得連線 ID,請選取 設定>管理連線與閘道>連線>設定。
注意
授予使用者對 ADLS Gen2 外部儲存位置的直接儲存層級存取權並不會遵守 Unity 目錄所授予的任何權限或維護的稽核記錄。 直接存取將繞過 Unity 目錄的稽核、譜系與其他安全性/監控功能,包括存取控制與權限。 您有責任透過 ADLS Gen2 管理直接儲存存取權,確保使用者擁有透過 Fabric 授予的適當權限。 對於儲存 Databricks 受控資料表的貯體,應在所有情況避免授予直接儲存層級寫入存取權限。 透過最初由 Unity 目錄管理的儲存體直接修改、刪除或改進任何項目可能導致資料損毀。
執行該筆記本
在取得雲端連線 ID 之後,整合 Unity 目錄資料表至 Fabric lakehouse,如下所示:
匯入同步筆記本至 Fabric 工作區。 此筆記本會從指定目錄與中繼存放區的結構描述匯出所有 Unity 目錄資料表的中繼資料。
在筆記本的第一個儲存格設定參數,整合 Unity 目錄資料表。 透過 PAT 權杖驗證的 Databricks API 可用於匯出 Unity 目錄資料表。 下列程式碼片段用於設定來源(Unity 目錄)與目的地 (OneLake) 參數。 確保將其替換為您自己的值。
# Databricks workspace dbx_workspace = "<databricks_workspace_url>" dbx_token = "<pat_token>" # Unity Catalog dbx_uc_catalog = "catalog1" dbx_uc_schemas = '["schema1", "schema2"]' # Fabric fab_workspace_id = "<workspace_id>" fab_lakehouse_id = "<lakehouse_id>" fab_shortcut_connection_id = "<connection_id>" # If True, UC table renames and deletes will be considered fab_consider_dbx_uc_table_changes = True
執行筆記本的所有儲存格,以便開始使用捷徑同步 Unity 目錄 Delta 資料表至 OneLake。 在筆記本完成之後,可在 lakehouse、SQL 分析端點與語意模型找到 Unity 目錄 Delta 資料表捷徑。
排程筆記本
若要在不透過手動重新同步/重新執行的情況,定期執行筆記本以整合 Unity 目錄 Delta 資料表至 OneLake,您可排程筆記本,或在 Fabric Data Factory 內的資料管線使用筆記本活動。
在後一案例,若您打算從資料管線傳遞參數,請指定筆記本的第一個儲存格為切換參數儲存格,並在管線提供適當參數。
其他考量
- 對於生產案例,建議使用 Databricks OAuth 進行驗證,並使用 Azure Key Vault 來管理密碼。 例如,您可使用 MSSparkUtils 認證公用程 式來存取金鑰保管庫密碼。
- 筆記本可與 Unity 目錄外部 Delta 資料表搭配使用。 若您的 Unity 目錄資料表使用多個雲儲存位置,即多個 ADLS Gen2,則建議透過每個 Cloud 連線分別執行筆記本。
- 不支援 Unity 目錄受控 Delta 資料表、檢視、具體化檢視、串流資料表與非 Delta 資料表。
- 若針對 Unity 目錄資料表結構描述進行變更(例如新增/刪除資料行),將自動反映於捷徑。 然而,部分更新(例如 Unity 目錄資料表重命名及刪除)需要重新同步/重新執行筆記本。 這是透過
fab_consider_dbx_uc_table_changes
參數來考慮。 - 對於寫入案例,在不同運算引擎使用相同儲存層可能導致意外後果。 當使用不同 Apache Spark 運算引擎與執行階段版本時,請務必了解其影響。