在 BigQuery 中配置 Apache Iceberg 表

本页面介绍如何配置 Datastream 以复制到 BigQuery 中的 Apache Iceberg 表。

Apache Iceberg 表提供与标准 BigQuery 表相同的全代管式体验,但将数据以 Apache Iceberg 表格式和 Parquet 文件格式存储在客户拥有的 Cloud Storage 存储分区中。您可以使用 BigQuery 功能查询和分析数据,同时将数据保留在自己的存储分区中。

表元数据

Datastream 会将名为 datastream_metadataSTRUCT 列附加到写入 BigQuery 目标位置的每个表中。

datastream_metadata 列包含以下字段:

  • UUID:此字段具有 STRING 数据类型。
  • SOURCE_TIMESTAMP:此字段具有 INTEGER 数据类型。
  • CHANGE_SEQUENCE_NUMBER:此字段具有 STRING 数据类型。它是 Datastream 为每个更改事件使用的内部序列号。
  • CHANGE_TYPE:此字段具有 STRING 数据类型。它表示更改事件的类型。对于仅附加写入模式,该值为 INSERT
  • SORT_KEYS:此字段包含 STRING 值数组。您可以使用这些值对更改事件进行排序。

配置到 Apache Iceberg 表的流式传输

如需设置数据流,以将数据注入到 Apache Iceberg 表,请执行以下操作:

  1. 创建 Cloud Storage 存储桶,以存储数据。
  2. 在 BigQuery 中创建 Cloud 资源连接。如需了解如何创建此类连接,请参阅 创建和设置 Cloud 资源连接
  3. 获取连接服务帐号的标识符:

    bq show --location=LOCATION --connection --project_id=PROJECT_ID
    CONNECTION_NAME
    
  4. 向您创建的 Cloud Storage 存储桶授予 Cloud 资源连接访问权限。为此,请向连接服务帐号添加 storage.admin IAM 权限:

    gcloud storage buckets add-iam-policy-binding gs://YOUR_GCS_BUCKET \
    --member=serviceAccount:YOUR_SERVICE_ACCOUNT_ID \
    --role=roles/storage.admin
    
  5. 创建 Apache Iceberg 表数据流。

    如需了解如何使用 控制台创建 Apache Iceberg 表数据流,请参阅 创建数据流。 Google Cloud

    如需了解如何使用 REST、Google Cloud CLI 或 Terraform 创建将数据流式传输到 Apache Iceberg 表的请求,请参阅 使用 API 管理数据流

后续步骤