Iceberg配置与类型
WITH参数说明
本章节介绍Flink连接器读写Iceberg表的参数配置。通过配置相关参数,可以控制Flink与Iceberg表格式之间的连接和读写行为,满足不同业务场景下的数据读写需求。
- Source参数
表1 Source参数 参数
是否必填
类型
默认值
取值范围
说明
streaming
否
Boolean
false
true、false
指定是否以流式模式读取Iceberg表。
true为流式读取,持续监控新快照并增量输出;false为批式读取,读取当前快照全量数据后结束。配置时需根据业务场景选择,实时ETL场景设为true。
start-snapshot-id
否
Long
无
有效的快照ID
指定流式读取的起始快照ID。
仅当streaming为true时生效。配置后将从该快照之后开始增量读取,未配置则从最早可用快照开始全量读取。配置时需确保快照ID存在且未过期。
end-snapshot-id
否
Long
无
有效的快照ID
指定流式读取的结束快照ID。
读取到该快照后作业自动结束。仅当streaming为true时生效。配置时需确保end-snapshot-id大于start-snapshot-id。
split-size
否
Long
128MB
正整数(字节数)
指定读取时每个Split的目标大小。
Iceberg按该大小将数据文件切分为多个Split并行读取。配置时需根据数据量和并行度调整,Split过小产生过多调度开销,Split过大导致数据倾斜。
- Sink参数
表2 Sink参数 参数
是否必填
类型
默认值
取值范围
说明
write-format
否
String
parquet
parquet、orc、avro
指定写入Iceberg表的文件格式。
- parquet为列式存储格式,具有高压缩比和良好的查询性能。
- orc为Optimized Row Columnar格式。
- avro为行式存储格式。
配置时需根据查询引擎和性能需求选择。
commit.interval
否
Duration
1min
有效的持续时间,如30s、5min
指定流式写入时的提交间隔。
每隔该时间将缓冲的数据文件提交为一个新的Iceberg快照。配置时需在数据可见性和写入性能之间权衡,间隔过短产生过多小文件,间隔过长数据延迟高。
write.target-file-size-bytes
否
Long
128MB
正整数(字节数)
指定写入时目标文件大小。
当写入数据量达到该阈值时会滚动生成新文件。配置时需根据存储和查询性能需求调整,文件过小影响查询效率,文件过大影响写入延迟。
upsert-enabled
否
Boolean
false
true、false
指定是否启用UPSERT写入模式。
启用后相同主键的数据将被更新而非追加。配置时需确保Iceberg表已定义主键,否则写入将报错(以产品实际支持为准)。
compression-codec
否
String
zstd
uncompressed、snappy、zstd、gzip
指定写入数据文件的压缩编码。
不同压缩算法在压缩比和速度之间有不同权衡,zstd提供较好的压缩比和速度平衡。配置时需根据存储成本和查询性能需求选择。
数据类型
| Flink | Iceberg |
|---|---|
| boolean | boolean |
| tinyint | integer |
| smallint | integer |
| integer | integer |
| bigint | long |
| float | float |
| double | double |
| char | string |
| varchar | string |
| string | string |
| binary | binary |
| varbinary | fixed |
| decimal | decimal |
| date | date |
| time | time |
| timestamp | timestamp without timezone |
| timestamp_ltz | timestamp with timezone |
| array | list |
| map | map |
| multiset | map |
| row | struct |