目录服务

Unity Catalog

师成师成· 更新于 2026-09-28· 阅读 9 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

本文将引导你完成在 Databricks 和开源 Unity Catalog 中注册 Apache XTable™ (Incubating) 同步的 Delta 表的步骤。

前置条件(适用于 Databricks Unity Catalog)

  1. 源表(Hudi/Iceberg)已写入 S3/GCS/ADLS 等外部存储位置。如果你还没有写入 S3/GCS/ADLS 的源表,可以按照本教程中的步骤进行设置。

  2. 配置 Databricks 到外部存储位置的连接。

    • Amazon S3 请按照此处的步骤操作
    • Google Cloud Storage 请按照此处的步骤操作
    • Azure Data Lake Storage Gen2 和 Blob Storage 请按照此处的步骤操作。
  3. 按照此处的说明在 Databricks 中创建 Unity Catalog metastore。

  4. 按照此处的说明在 Databricks 中创建外部位置。

  5. 克隆 Apache XTable™ (Incubating)仓库,并按照安装页面上的步骤构建 xtable-utilities_2.12-0.5.0-SNAPSHOT-bundled.jar。

前置条件(适用于开源 Unity Catalog)

  1. 源表(Hudi/Iceberg)已写入 S3/GCS/ADLS 等外部存储位置或本地。在本指南中,我们将使用本地文件系统。但对于 S3/GCS/ADLS,你必须按照此处的说明,添加与所使用的云对象存储系统相关的额外属性。
  2. 从此处克隆 Unity Catalog 仓库,并按照此处的说明构建该项目。

步骤

运行同步

在克隆好的 Apache XTable™ (Incubating) 目录中创建 my_config.yaml。

yaml

sourceFormat: HUDI|ICEBERG # choose only one
targetFormats:
  - DELTA
datasets:
  -
    tableBasePath: s3://path/to/source/data
    tableName: table_name
    partitionSpec: partitionpath:VALUE # you only need to specify partitionSpec for HUDI sourceFormat

注意:

  1. 如果源表位于 GCS,请将 s3://path/to/source/data 替换为 gs://path/to/source/data;如果源表位于 ADLS,则替换为 abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/<path-to-data>。
  2. 同时请将 sourceFormat 和 tableName 字段替换为合适的值。

在克隆好的 Apache XTable™ (Incubating) 目录下打开终端,使用以下命令运行同步流程。

shell

java -jar xtable-utilities/target/xtable-utilities_2.12-0.5.0-SNAPSHOT-bundled.jar --datasetConfig my_config.yaml

Note:此时,如果你检查自己的存储桶路径,就能看到 _delta_log 目录,其中包含 00000000000000000000.json,该文件包含帮助查询引擎将源表解释为 Delta 表的日志。

在 Databricks Unity Catalog 中注册目标表

(请先确保已完成上文中针对 Databricks Unity Catalog 所提到的前置条件)在 Databricks 工作区中,打开 SQL 编辑器并运行以下查询。

SQL

CREATE CATALOG xtable;

CREATE SCHEMA xtable.synced_delta_schema;

CREATE TABLE xtable.synced_delta_schema.<table_name>
USING DELTA
LOCATION 's3://path/to/source/data';

Note:

Replace s3://path/to/source/data with gs://path/to/source/data if your source table is in GCS, or with abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/<path-to-data> if your source table is in ADLS.

验证结果

现在你可以在 Unity Catalog 的 Catalog 下看到所创建的 delta 表,其位于 synced_delta_schema 中,表名为 <table_name>;你也可以在 SQL 编辑器中查询该表:

SELECT * FROM xtable.synced_delta_schema.<table_name>;

使用 CLI 在开源 Unity Catalog 中注册目标表

(在完成上文为开源 Unity Catalog 提到的先决条件之后)在终端中按照此处的步骤说明启动 UC 服务器。

在另一个终端中,运行以下命令以在 Unity Catalog 中注册目标表。

shell

bin/uc table create --full_name unity.default.people --columns "id INT, name STRING, age INT, city STRING, create_ts STRING" --storage_location /tmp/delta-dataset/people

验证结果

现在可以使用以下命令读取注册到 Unity Catalog 中的表。

shell

bin/uc table read --full_name unity.default.people

结结语

在本指南中,我们介绍了如何:

  1. 使用 Apache XTable™ (Incubating) 同步源表,为目标表格式创建元数据
  2. 在 Databricks 的 Unity Catalog 以及开源 Unity Catalog 中对 Delta 格式的数据进行编目
  3. 使用 Databricks SQL 编辑器和开源 Unity Catalog CLI 查询 Delta 表

评论

登录后参与评论

正在加载评论…