目录服务

BigLake Metastore

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

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

本文将逐步介绍如何在 GCP 的 BigLake Metastore 中注册由 Apache XTable™ (Incubating) 同步生成的 Iceberg 表。

前置条件

  1. 源表(Hudi/Delta)已写入 Google Cloud Storage。如果源表尚未写入 GCS,可以按照本教程中的步骤进行设置。

  2. 为确保 BigLake API 的调用方(Apache XTable™ (Incubating) 所使用的您的服务账号)具备创建 BigLake 表所需的权限,请让管理员为该服务账号授予 BigLake Admin(roles/bigquery.admin)访问权限。

  3. 为确保 Storage Account API 的调用方(Apache XTable™ (Incubating) 所使用的您的服务账号)具备在 GCS 中写入日志/元数据文件所需的权限,请让管理员为该服务账号授予 Storage Object User(roles/storage.objectUser)访问权限。

  4. 如果您在 GCP 之外运行 Apache XTable™ (Incubating),则需要为机器提供与 BigLake 和 GCS 交互的访问权限。为此,请在机器上保存服务账号的权限密钥:

    export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service_account_key.json
  5. 克隆 Apache XTable™ (Incubating) 的代码仓库,并按照安装页面上的步骤生成 xtable-utilities_2.12-0.5.0-SNAPSHOT-bundled.jar。

  6. 将 BigLake Iceberg JAR 下载到本地。Apache XTable™ (Incubating) 要求该 JAR 存在于 classpath 中。

步骤

注意:

目前 BigLake Metastore 只能通过 Google 的 BigLake Rest API 访问,因此 Apache XTable™ (Incubating) 要求您在对源数据集运行同步之前先设置以下各项。

  • BigLake Catalog
  • BigLake Database

创建 BigLake Catalog

使用 Google REST 参考文档中 projects.locations.catalogs.create 方法的 Try this method 来创建 catalog。

在本教程中,我们使用 us-west1 区域。

parent

projects/<yourProjectName>/locations/us-west1/catalogs

catalogId

xtable

创建 BigLake 数据库

在 Google 针对 projects.locations.catalogs.databases.create 方法的 REST 参考文档(https://cloud.google.com/bigquery/docs/reference/biglake/rest/v1/projects.locations.catalogs/create)中,使用「Try this method」按钮来创建数据库。

parent

projects/<yourProjectName>/locations/us-west1/catalogs/xtable/databases

databaseId

xtable_synced_db

运行同步

  • sourceFormat: HUDI
  • sourceFormat: DELTA

yaml

sourceFormat: HUDI
targetFormats:
  - ICEBERG
datasets:
  -
    tableBasePath: gs://path/to/source/data
    tableName: table_name
    namespace: database_name

目录信息可以在一个 yaml 文件中指定,并通过 --icebergCatalogConfig 选项传入。以下是一个用于同步到 BigLake Metastore 的 catalog.yaml 文件示例:


```yaml
catalogImpl: org.apache.iceberg.gcp.biglake.BigLakeCatalog
catalogName: xtable
catalogOptions:
  gcp_project: <yourProjectName>
  gcp_location: us-west1
  warehouse: gs://path/to/warehouse

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

shell

java -cp xtable-utilities/target/xtable-utilities_2.12-0.5.0-SNAPSHOT-bundled.jar:/path/to/downloaded/biglake-catalog-iceberg1.2.0-0.1.0-with-dependencies.jar org.apache.xtable.utilities.RunSync  --datasetConfig my_config.yaml --icebergCatalogConfig catalog.yaml

注意:

此时,如果您检查存储桶路径,将会看到 metadata 目录,其中包含元数据文件,这些信息有助于查询引擎将数据解析为 Iceberg 表。

验证结果

同步成功后,Apache XTable™ (Incubating) 会将表直接写入 BigLake Metastore。我们可以使用 Google REST 参考文档中 projects.locations.catalogs.databases.tables.get 方法的 Try this method 选项来查看已创建的表。

name

projects/<yourProjectName>/locations/us-west1/catalogs/xtable/databases/xtable_synced_db/tables/table_name

结论

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

  1. 使用 Apache XTable™ (Incubating) 同步源表以创建 Iceberg 元数据
  2. 在 BigLake Metastore 中将数据编目为 Iceberg 表
  3. 使用 projects.locations.catalogs.databases.tables.get 方法验证表的创建

评论

登录后参与评论

正在加载评论…