关于 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 进行交互,将其作为 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 项目。
命名空间(数据集) 一个 BigQuery 数据集,配置为 Iceberg 命名空间,用于定义在其中创建的表的默认 Cloud Storage 位置。
表 一种 Apache Iceberg 表,其架构、快照和元数据指针在 BigQuery 中跟踪,其数据文件位于 Cloud Storage 中。

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

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

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

后续步骤