Sink
FlinkSink�#chainIcebergOperators方法 distribute
�,append、commit、dummy也就是IcebergSink有3个算子。和普通的JDBC只有一个算子不同。
�distribute (keyBy) 数据重新分配均匀
append 写数据
commit 提交数据
dummy 没有作用空的
与Flink源码的对接点
Iceberg 的写入是借助Flink的AbstractStreamOperator接口
与Parquet/ORC的对接点
对接类
RowDataTaskWriterFactory
FlinkAppenderFactory
RowDataTaskWriterFactory
FlinkAppenderFactory#newDataWriter/newAppender
FlinkSink#createStreamWriter()
读取对接_RowDataFileScanTaskReader
�#_newIterable
�
�
读取
FlinkSource API相关
�新版Source是IcebergSource
ORC
Iceberg纯读取相关
ORC/OrcIterable/OrcRowIterator
ORC只管读一个文件。
OrcFile.createReader -> 创建读文件类 _RecordReader -> _RecordReaderImpl -> pickRowGroups
�
�
Flink纯读取 相关
每个并行度内部的读逻辑
RowDataReaderFunction IcebergSource初始化时设置会在IcebergSourceSplitReader
�拉去数据时调用
�
RowDataFileScanTaskReader 读一个文件,在这个类之前会根据文件数量进行分片。 创建读数据迭代器的
FlinkOrcReader
编译指定Flink版本
./gradlew clean build -x test -x integrationTest -DflinkVersions=1.14
�
��
�