Flink的operator chain引发的问题

今天早上在群里有人问了这样一个问题,我当时只看了截图没看他的代码,然后我俩在那聊了半天,最后发现不在一个频道,后面我仔细看了一下,他的代码明白了他的逻辑,我先简单描述一下场景,他在Flink流开始的时候直接把原数据分别sink到了es和gp库,然后把处理过的流拿了两个测流输出,最后分别把这两个测流sink到了es和gp,相当于他一共有4个sink,但是他在Flink的UI上面看到的DAG图是这样的,如下图所示

 他就很郁闷,不应该是4个sink吗,怎么只显示了2个,而且他是先做了2个sink,然后处理完,最后又做了两个sink,他想要的效果是这样的,如下图所示

跟DAG的图显示完全不一样,其实并不是DAG显示错了,也不是他的代码有问题,是因为他不熟悉Flink的operator chain,Flink默认是开启operator chain的,他会将多个operator,串在一起作为一个operator chain来执行,这样可以提高程序的性能,那怎么才能让DAG显示成他想要的效果呢,其实很简单,有两种方法,第一在最后一个算子的地方(sink

猜你喜欢

转载自blog.csdn.net/xianpanjia4616/article/details/94985755