适用于 Apache Iceberg 的 Dataflow 托管式 I/O

托管式 I/O 支持 Apache Iceberg 的以下功能:

目录
  • Hadoop
  • Hive
  • 基于 REST 的目录
  • BigQuery Metastore(如果不使用 Runner v2,则需要使用 Apache Beam SDK 2.62.0 或更高版本)
读取功能 批处理读取
写入功能
  • 批处理写入
  • 流式写入
  • 动态目标
  • 动态表格创建

对于 Apache Iceberg 的 BigQuery 表,请将 BigQueryIO 连接器与 BigQuery Storage API 搭配使用。该表必须已经存在;不支持动态表格创建。

要求

以下 SDK 支持 Apache Iceberg 的托管式 I/O:

  • Java 版 Apache Beam SDK 2.58.0 或更高版本
  • Python 版 Apache Beam SDK 2.61.0 版或更高版本

配置

适用于 Apache Iceberg 的托管式 I/O 支持以下配置参数:

ICEBERG 读取

配置 类型 说明
表格 str Iceberg 表的标识符。
catalog_name str 包含表的目录的名称。
catalog_properties map[str, str] 用于设置 Iceberg 目录的属性。
config_properties map[str, str] 传递给 Hadoop 配置的属性。
drop list[str] 要从读取操作中排除的列名称子集。如果为 null 或空,则读取所有列。
filter str 在扫描时用于过滤数据的类 SQL 谓词。示例:“id > 5 AND status = 'ACTIVE'”。使用 Apache Calcite 语法:https://calcite.apache.org/docs/reference.html
keep list[str] 要专门读取的列名称子集。如果为 null 或空,则读取所有列。

ICEBERG 写入

配置 类型 说明
表格 str 完全限定的表标识符。您还可以提供模板以向多个动态目标写入,例如:“dataset.my_{col1}_{col2.nested}_table”。
catalog_name str 包含表的目录的名称。
catalog_properties map[str, str] 用于设置 Iceberg 目录的属性。
config_properties map[str, str] 传递给 Hadoop 配置的属性。
drop list[str] 在写入之前要从输入记录中舍弃的字段名称列表。与“keep”和“only”互斥。
keep list[str] 输入记录中要保留的字段名称列表。系统会在写入之前舍弃所有其他字段。与“drop”和“only”互斥。
only str 应写入的单个记录字段的名称。与“keep”和“drop”互斥。
partition_fields list[str] 用于创建在创建表时应用的分区规范的字段。对于字段“foo”,可用的分区转换如下:
  • foo
  • truncate(foo, N)
  • bucket(foo, N)
  • hour(foo)
  • day(foo)
  • month(foo)
  • year(foo)
  • void(foo)

如需详细了解分区转换,请访问 https://iceberg.apache.org/spec/#partition-transforms

table_properties map[str, str] 在创建表时要设置的 Iceberg 表属性。如需详细了解表属性,请访问 https://iceberg.apache.org/docs/latest/configuration/#table-properties
triggering_frequency_seconds int32 对于流处理流水线,设置生成快照的频率。

后续步骤

如需了解详情和查看代码示例,请参阅以下主题: