Flink目前有两套算子体系,DataStream和DataSet,未来会用DataStream取代DataSet算子实现批流算子的统一。
一、算子行为
1、生命周期管理(StreamTask类管理算子的生命周期)
(1)setup
初始化环境,时间服务,注册监控
(2)open
算子的初始化逻辑,比如状态的初始化
(3)close
所有的数据处理完毕之后关闭算子,此时需要确保将所有的缓存数据向下游发送。
(4)dispose
算子生命周期最后一步,是close之后执行,主要用于资源的释放
2、状态与容错管理
算子负责状态管理,提供状态的存储,触发检查点的时候,保存状态快照,异步保存到外部的分布式存储中。当作业失败的时候算子负责从保存的快照中恢复状态
3、数据处理
对数据处理,同时支持Watermark和Latencymarker的处理。针对单流输入和双流输入,定义了不同的接口
(1)OneInputStreamOperator(单输入算子)
public interface OneInputStreamOperator<IN, OUT> extends StreamOperator<OUT> { //数据处理 void processElement(StreamRecord<IN> element) throws Exception; //Watermark处理 void processWatermark(Wat