关于 BigQuery 端点的自定义 Apache Iceberg 目录

适用于 BigQuery 的自定义 Apache Iceberg 目录端点将 Apache Spark 和 Apache Flink 等开源查询引擎连接到 Lakehouse 运行时目录。通过集成自定义目录插件 (BigQueryMetastoreCatalog),此端点可让您直接通过 BigQuery 管理和查询 Apache Iceberg 表元数据,同时将数据和元数据文件存储在 Cloud Storage 中。

自定义 Iceberg 目录的运作方式

自定义 Apache Iceberg 目录使用 JAR 库中提供的自定义目录实现 (org.apache.iceberg.gcp.bigquery.BigQueryMetastoreCatalog)。当计算工作负载在 Managed Service for Apache Spark 上运行时,该引擎会使用此插件与 BigQuery 进行交互,将 BigQuery 用作 Apache Iceberg 表的元数据存储区。

工作流程如下:

  1. 目录实现:查询引擎加载 BigQuery Metastore 目录 JAR,并配置 Spark 会话目录属性以使用 org.apache.iceberg.gcp.bigquery.BigQueryMetastoreCatalog
  2. 元数据管理:当您使用 Spark SQL 或 DataFrame API 创建或修改表时,该插件会将数据集和表定义存储在 BigQuery 中。
  3. 数据存储:Apache Iceberg 元数据文件(metadata.json、清单列表、清单)和数据文件(例如 Parquet 文件)直接存储在您指定的 Cloud Storage 数据仓库路径中。
  4. 跨引擎访问:由于元数据已在 BigQuery 中注册,因此您可以从 Spark 等开源引擎查询表,也可以直接从 BigQuery 查询表。

资源层次结构

BigQuery 端点的自定义 Apache Iceberg 目录按以下层次结构整理元数据:

资源 说明
项目 包含 BigQuery 资源和 Cloud Storage 数据仓库存储空间的 Google Cloud 项目。
命名空间(数据集) 配置为充当 Iceberg 命名空间的 BigQuery 数据集,用于定义在其中创建的表的默认 Cloud Storage 位置。
一种 Apache Iceberg 表,其架构、快照和元数据指针在 BigQuery 中跟踪,而数据文件位于 Cloud Storage 中。

比较自定义 Iceberg 目录和 Iceberg REST 目录

下表总结了 BigQuery 端点的自定义 Apache Iceberg 目录与 Apache Iceberg REST 目录端点之间的主要区别:

功能 BigQuery 的自定义 Iceberg 目录 Apache Iceberg REST Catalog 端点(推荐)
目录 API 标准 自定义插件 (BigQueryMetastoreCatalog) 开放标准 Apache Iceberg REST 目录 API
目录层次结构 项目 > BigQuery 数据集 > 表 项目 > 目录 > 命名空间 > 表 (P.C.N.T)
存储配置 按数据集或表指定的 Cloud Storage 路径 多存储桶 (bl://) 或单存储桶 (gs://) 目录
凭证分发 不支持(使用直接 IAM 凭据) 支持(提供短期有效的存储空间访问令牌)
灾难恢复 不支持 支持(跨区域复制和故障切换)
建议用于 现有部署和工作流 新的工作负载和标准 Iceberg REST 客户端集成

后续步骤