Apache Iceberg 表概览

由 Lakehouse 运行时目录管理并通过 Apache Iceberg REST 目录端点提供服务的 Apache Iceberg 表可让您使用符合开源 Apache Iceberg 表规范的开放且可互操作的数据。您可以使用 BigQuery 或任何与 Iceberg 兼容的处理引擎来读取和写入这些表。

本文档将这些表称为托管式 Apache Iceberg 表或 Iceberg 表。如需比较表类型,请参阅比较表类型。

表格选项

您可以通过配置表选项来选择启用以下功能:

  1. 读写互操作性(预览版):为多个引擎提供无缝读写支持,包括 BigQuery、Managed Service for Apache Spark、与 Iceberg 兼容的引擎(例如开源引擎 [Apache Spark、Apache Flink 和 Trino])以及第三方引擎(例如 Snowflake)。
  2. 自动表管理(预览版):自动表管理(存储优化),例如压缩和垃圾回收。

除了上述功能之外,Lakehouse 管理的 Apache Iceberg 表默认还支持以下功能:

  1. BigQuery 数据定义语言(预览版):除了使用 Spark、Flink 和 Trino 等 Iceberg 兼容引擎创建或更新表之外,您还可以使用 BigQuery DDL 语句(例如 CREATE TABLE、ALTER TABLE 和 DROP TABLE)创建或更新 Iceberg 表。创建表后,这些表可在这些引擎和 BigQuery 中进行读写,并且属于由 Lakehouse 运行时目录管理的同一目录和命名空间构造。
  2. BigQuery 的凭证发放支持:在 Lakehouse 运行时目录中读取或写入 Iceberg 表时,BigQuery 支持使用凭证发放进行身份验证。您可以在目录级别设置凭据发放。

管理操作

您可以对 Apache Iceberg 表执行以下管理操作:

  • 创建表:使用 Google Cloud 控制台、Spark、Trino、gcloud、BigQuery(预览版)或 Iceberg REST Catalog API (CreateIcebergTable) 在目录命名空间中创建 Apache Iceberg 表。
  • 注册表:使用 gcloud 或 Iceberg REST Catalog API (RegisterIcebergTable) 在目录命名空间中注册现有 Apache Iceberg 表。
  • 列出表:使用 Google Cloud 控制台、Spark、Trino、gcloud、BigQuery(预览版)或 Iceberg REST Catalog API (ListIcebergTableIdentifiers) 查看命名空间中的表标识符。
  • 获取表详细信息:使用 Google Cloud 控制台、Spark、Trino、gcloud、BigQuery(预览版)或 Iceberg REST Catalog API(GetIcebergTable、LoadIcebergTableCredentials)检查表架构、属性和凭据。
  • 插入数据:使用 Spark、Trino 或 BigQuery(预览版)将数据行附加到 Iceberg 表。
  • 查询表:使用由四部分组成的表命名方式,从 Spark、Trino 或 BigQuery 对 Iceberg 表执行查询。
  • 使用 DML 修改数据:使用 BigQuery(预览版)、Spark 或 Trino 中的 DML 语句更新、删除或合并 Iceberg 表中的数据行。
  • 更改表:使用 Google Cloud 控制台、Spark、Trino、gcloud、BigQuery(预览版)或 Iceberg REST Catalog API (UpdateIcebergTable) 演进表架构并更新元数据属性。
  • 配置表选项:配置属性以启用 BigQuery(预览版)DML 和自动表管理。
  • 管理表 ACL:查看和更新 Iceberg 表的 IAM 政策,以控制特定主体的访问权限(get-iam-policy、set-iam-policy)。
  • 将 Iceberg V1 表升级到 V2:将现有 Iceberg V1 表升级到受支持的 V2 格式。
  • 在 Iceberg V3 表中使用二进制删除向量:启用二进制删除向量,以优化 Iceberg V3 表中的删除性能。
  • 删除表:使用 Google Cloud 控制台、Spark、Trino、gcloud、BigQuery(预览版)或 Iceberg REST Catalog API (DeleteIcebergTable) 从目录中删除表注册,而无需清除底层存储文件。

后续步骤