在 BigQuery 中配置 Apache Iceberg 表

借助 Datastream,您可以将数据从来源复制到 BigQuery 中的 Apache Iceberg 表。Apache Iceberg 表提供与标准 BigQuery 表相同的全代管式体验,同时将数据以 Parquet 格式存储在您自己的 Cloud Storage 存储桶中。通过此设置,您可以使用 BigQuery 查询和分析数据,同时保留对底层存储空间的完全控制。

Datastream 仅支持在仅附加写入模式下将数据流式传输到 Apache Iceberg 表。如需了解详情,请参阅配置写入模式。

表元数据

Datastream 会将名为 datastream_metadata 的 STRUCT 列附加到写入 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 表流。

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

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

后续步骤