将 Databricks Unity Catalog 与 OneLake 集成

此方案展示如何使用快捷方式将 Unity Catalog 外部 Delta 表集成到 OneLake。 学完本教程后,你将能够自动将 Unity Catalog 外部 Delta 表同步到 Microsoft Fabric 湖屋。

先决条件

在连接之前,必须具备:

设置 Cloud Storage 连接

首先,检查 Unity Catalog 表正在使用 Azure Data Lake Storage Gen2 (ADLS Gen2) 中的哪些存储位置。 此云存储连接由 OneLake 快捷方式使用。 若要创建与相应 Unity Catalog 存储位置的云连接,请执行以下操作:

  1. 创建 Unity Catalog 表使用的云存储连接。 了解如何设置 ADLS Gen2 连接

  2. 创建连接后,通过选择“设置>“管理连接和网关”>“连接”>“设置”来获取连接 ID。

显示 ADLS Gen2 连接 ID 的屏幕截图。

注意

授予用户对 ADLS Gen2 中外部位置存储的直接存储级别访问权限并不遵循 Unity Catalog 授予的任何权限或维护的审核。 直接访问将绕过 Unity Catalog 的审核、世系和其他安全/监视功能,包括访问控制和权限。 你负责管理通过 ADLS Gen2 的直接存储访问,并确保用户拥有通过 Fabric 授予的适当权限。 避免为存储 Databricks 托管表的存储桶授予直接存储级别写入访问权限的所有方案。 直接通过最初由 Unity Catalog 管理的存储修改、删除或演化任何对象可能会导致数据损坏。

运行笔记本

获取云连接 ID 后,将 Unity 目录表集成到 Fabric 湖屋,如下所示:

显示 Unity Catalog 到 Fabric 快捷方式流的屏幕截图。

  1. 将同步笔记本导入 Fabric 工作区。 此笔记本将从元存储中的给定目录和架构导出所有 Unity 目录表元数据。

  2. 在笔记本的第一个单元格中配置参数 以集成 Unity Catalog 表。 Databricks API 通过 PAT 令牌进行身份验证,用于导出 Unity Catalog 表。 以下代码片段用于配置源 (Unity Catalog) 和目的地 (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
    
  3. 运行笔记本的所有单元格,开始使用快捷方式将 Unity Catalog Delta 表同步到 OneLake。 笔记本完成后,湖屋、SQL 分析终结点和语义模型中将提供 Unity Catalog Delta 表的快捷方式。

计划笔记本

如果要定期执行笔记本,以便在不手动重新同步/重新运行的情况下将 Unity Catalog Delta 表集成到 OneLake 中,则可以计划笔记本或在 Fabric 数据工厂内的数据管道中使用笔记本活动

在后一方案中,如果打算从数据管道传递参数,请将笔记本的第一个单元格指定为切换参数单元格,并在管道中提供相应的参数。

显示笔记本活动参数的屏幕截图。

其他注意事项

  • 对于生产方案,建议使用 Databricks OAuth 进行身份验证,并使用 Azure Key Vault 来管理机密。 例如,可以使用 MSSparkUtils 凭证实用工具来访问 Key Vault 机密。
  • 笔记本适用于 Unity Catalog 外部 Delta 表。 如果对 Unity Catalog 表使用多个云存储位置,即多个 ADLS Gen2,建议分别对每个云连接运行笔记本。
  • 不支持 Unity Catalog 托管 Delta 表、视图、具体化视图、流式处理表和非 Delta 表。
  • 对 Unity Catalog 表架构的更改(如添加/删除列)会自动反映在快捷方式中。 但是,某些更新(如重命名和删除 Unity Catalog 表)需要重新同步/重新运行笔记本。 fab_consider_dbx_uc_table_changes 参数将考虑这一点。
  • 对于编写方案,跨不同计算引擎使用相同的存储层可能会导致意外后果。 请务必掌握使用不同的 Apache Spark 计算引擎和运行时版本时的影响。