如需从 Dataflow 写入 Apache Iceberg,请使用托管式 I/O 连接器。
托管式 I/O 支持 Apache Iceberg 的以下功能:
目录 |
|
---|---|
读取功能 | 批处理读取 |
写入功能 |
|
对于 Apache Iceberg 的 BigQuery 表,请将 BigQueryIO
连接器与 BigQuery Storage API 搭配使用。该表必须已经存在;不支持动态表格创建。
依赖项
将以下依赖项添加到项目中:
Java
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-sdks-java-managed</artifactId>
<version>${beam.version}</version>
</dependency>
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-sdks-java-io-iceberg</artifactId>
<version>${beam.version}</version>
</dependency>
配置
托管式 I/O 针对 Apache Iceberg 使用以下配置参数。
读取和写入配置 | 数据类型 | 说明 |
---|---|---|
table |
字符串 | Apache Iceberg 表的标识符。示例:
"db.table1" 。 |
catalog_name |
字符串 | 目录的名称。示例:"local" 。 |
catalog_properties |
地图 | Apache Iceberg 目录的配置属性映射。所需的属性取决于清单。如需了解详情,请参阅 Apache Iceberg 文档中的 CatalogUtil 。 |
config_properties |
地图 | 一组可选的 Hadoop 配置属性。如需了解详情,请参阅 Apache Iceberg 文档中的 CatalogUtil 。 |
写入配置 | 数据类型 | 说明 |
triggering_frequency_seconds |
整数 | 对于流式写入流水线,表示接收器尝试生成快照的频率,以秒为单位。 |
动态目标
适用于 Apache Iceberg 的托管式 I/O 支持动态目标。连接器可以根据传入记录中的字段值动态选择目标表,而不是写入单个固定表。
如需使用动态目标,请为 table
配置参数提供模板。如需了解详情,请参阅动态目标。
示例
以下示例展示了如何使用托管式 I/O 写入 Apache Iceberg。
将数据写入 Apache Iceberg 表
以下示例将内存中的 JSON 数据写入 Apache Iceberg 表。
Java
如需向 Dataflow 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。
使用动态目标写入数据
以下示例根据输入数据中的某个字段将数据写入不同的 Apache Iceberg 表。
Java
如需向 Dataflow 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置身份验证。
后续步骤
- 从 Apache Iceberg 读取数据。
- 详细了解托管式 I/O。