1.11 之前的 Source Function 和 案例
Stream
Batch Model
1.11 After:基于 DataStream API 的批流一体

对于有界的文件类型数据:
- 每个Split就是一个文件或者文件一部分;
- SplitEnumerator列举出指定文件夹下的全部文件,并逐个分配给Reader;
- 一旦所有的Splits全部分配完毕,此时SplitEnumerator会给Reader发送NoMoreSplits消息;
- SourceReader接收到Splits后,会根据InputFormat读取数据;
- 当SourceReader接收到NoMoreSplits消息时,会完成并停止;
而对于无界的流式文件数据:
- SplitEnumerator不会发送NoMoreSplits消息,而是周期性的读取指定URI/Path的地址,并获取新的文件,进而转化为Splits发送给Reader;
对于真正流式数据接口,譬如无界的 Kafka 数据:
- 每个Split对应一个KafkaTopicPartition
- SplitEnumerator连接KafkaBroker获取所有当前Topic下的Partition;