-
CoProcessFunction的作用是同时处理两个数据源的数据;
-
试想在面对两个输入流时,如果这两个流的数据之间有业务关系,该如何编码实现呢,例如下图中的操作,同时监听9998和9999端口,将收到的输出分别处理后,再由同一个sink处理(打印):
- Flink支持的方式是扩展CoProcessFunction来处理,为了更清楚认识,我们把KeyedProcessFunction和CoProcessFunction的类图摆在一起看,如下所示:
- 从上图可见,CoProcessFunction和KeyedProcessFunction的继承关系一样,另外CoProcessFunction自身也很简单,在processElement1和processElement2中分别处理两个上游流入的数据即可,并且也支持定时器设置;
[](
)本篇实战功能简介
本篇咱们要开发的应用,其功能非常简单,描述如下:
-
建两个数据源,数据分别来自本地9998和9999端口;
-
每个端口收到类似aaa,123这样的数据,转成Tuple2实例,f0是aaa,f1是123;
-
在CoProcessFunction的实现类中,对每个数据源的数据都打日志,然后全部传到下游算子;
-
下游操作是打印,因此9998和9999端口收到的所有数据都会在控制台打印出来;
-
整个d