1、flink编程模型
1)抽象数据集
DataStream(实时):使用StreamExecutionEnvironment创建DataStream
DataSet(离线): 使用ExecutionEnvironment创建DataSet
2)编程模型
Source:从指定的数据源创建最原始的抽象数据集
Transformation:对数据集进行转换操作,返回一个新的数据集
Sink:将数据输出到指定的存储系统中
注意:job中必须有source和sink,Transformation可有可无
2、source
1)单并行的source
无论指定多少个并行度,该source对应的DataStream并行度只有1,即产生数据的subTask实例就一个,例如socketTextStream方法创建的DataStream
2)多并行的source
可以根据提交任务时指定程序的并行度,DataStreamSource可以有多个并行,即有多个读取数据的subTask实例,FlinkKafkaConsumer
3)自定义source
3.1)单并行:实现sourceFunction接口
3.2)多并行:ParallelSourceFunction接口,可以继承RichParalleSourceFunction抽象类(必须要实现run方法和cancel方法,可以选择性实现open方法和close方法)
[方法执行顺序:open(创建连接)->Run(while循环)->cancel->close(关闭连接,释放资源)]
3.3)调用addSource,将自定义的sourceFunction的实现类的实例传入到该方法中
4)flinkKafkaConsumer:
4.1)多并行的source,里面使用operator记录偏移量,开启checkpointing可以容错,
flinkKafkaConsumer对应的DataStreamSource的并行度的数量为提交任务时指定的-p,本地模式为当前机器逻辑核数量
4.2)如果DataStreamSource的并行度大于topic分区的