BigLake Metastore
本文将逐步介绍如何在 GCP 的 BigLake Metastore 中注册由 Apache XTable™ (Incubating) 同步生成的 Iceberg 表。
前置条件
源表(Hudi/Delta)已写入 Google Cloud Storage。如果源表尚未写入 GCS,可以按照本教程中的步骤进行设置。
为确保 BigLake API 的调用方(Apache XTable™ (Incubating) 所使用的您的服务账号)具备创建 BigLake 表所需的权限,请让管理员为该服务账号授予 BigLake Admin(roles/bigquery.admin)访问权限。
为确保 Storage Account API 的调用方(Apache XTable™ (Incubating) 所使用的您的服务账号)具备在 GCS 中写入日志/元数据文件所需的权限,请让管理员为该服务账号授予 Storage Object User(roles/storage.objectUser)访问权限。
如果您在 GCP 之外运行 Apache XTable™ (Incubating),则需要为机器提供与 BigLake 和 GCS 交互的访问权限。为此,请在机器上保存服务账号的权限密钥:
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service_account_key.json克隆 Apache XTable™ (Incubating) 的代码仓库,并按照安装页面上的步骤生成
xtable-utilities_2.12-0.5.0-SNAPSHOT-bundled.jar。将 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/catalogscatalogId
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/databasesdatabaseId
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结论
在本指南中,我们介绍了如何:
- 使用 Apache XTable™ (Incubating) 同步源表以创建 Iceberg 元数据
- 在 BigLake Metastore 中将数据编目为 Iceberg 表
- 使用
projects.locations.catalogs.databases.tables.get方法验证表的创建
评论
登录后参与评论
KnowForge