数据湖-Iceberg-源码学习-Query Engines-Flink-读数据-集成-Connector-DataSet-FlinkInputFormat
一、概述
二、设计
FlinkInputFormat 有两个重要的成员变量:TableLoader tableLoader 和 FileIO io。通过它们,可以对元数据和数据进行操作。流任务启动时候执行InputFormatSourceFunction 的 $open$ 方法完成初始化,然后就通过 FlinkInputFormat 循环读取数据记录,需要经过两大步骤:
获取 FlinkInputFormat 迭代器
前者对应代码中getinputSplits方法,其通过RPC方法调用获取读取文件FlinkInputSplit的迭代器,实际最终仍然是
调用FlinklnputFormat的createlnputSplits,在createlnputSplits方法中,通过Flink SplitPlanner返回
Flinklnputsplit迭代器获取 FileScanTask 迭代器,并从中读取记录。
通过 $format.nextRecord$ 读取记录,内部使用了 DataIterator,在 $format.open$ 初始化 DataIterator,在 DataIterator 完成对 FileScanTask 级别的送代读访问。
CombinedScanTask 是一个用于 Apache Iceberg 数据湖的任务,它可以将多个扫描任务组合成一个任务,以提高扫描的效率。在数据湖中,数据通常存储在多个分区和文件中,对整个数据集进行扫描可能需要历时很长时间。
CombinedScanTask 通过将多个扫描任务组合到一起,并在并行执行这些任务的基础上,可以更快地扫描整个数据集。同时,该任务还提供了一些高级功能,如过滤器下推和投影,以及对分区扫描的支持。这些功能可以使数据湖的查询速度更快,提高数据分析的效率。
2.1. 主要属性
FlinkInputFormat 有两个重要的成员变量: TableLoader tableLoader 和 FileIO io。
2.2. 主要方法
但是要获取记录级别的数据,需要经过两大步骤: 先获取 FlinkInputSplit 迭代器,然后获取 FileScanTask 迭代器,并从中读取记录。
- $createInputSplits$










