apache flink作业中的一个object flink操作符(例如filter)或两个object

zc0qhyus  于 2021-06-21  发布在  Flink
关注(0)|答案(1)|浏览(274)

我有ApacheFlink作业,其中有4个来自不同ApacheKafka主题的输入数据流(json消息),我只有一个对象xfilterfunction—它执行一些过滤。我编写了一些数据管道逻辑(例如原始示例):

FilterFunction<MyEvent> xFilter = new XFilterFunction();

inputDataStream1.filter(xFilter)
.name("Xfilter")
.uid("Xfilter");

inputDataStream2
.union(inputDataStream3)
//here some logics (map, process,...)
.filter(xFilter);

在job中使用一个新的objectxfilterfunction是好还是坏的做法?
或者最好使用两个新对象xfilterfunction(2个流->2个新过滤器对象)

wbgh16ku

wbgh16ku1#

如果你多次示例化这个类。

inputDataStream1.filter(new XFilterFunction());
...
inputDataStream2.filter(new XFilterFunction());

应该没有问题。我不太确定像状态或重写的上下文函数这样的东西是否会显示出不需要的行为。以防它不是 RichFunction ,也许只有一个纯粹的函数调用是通过委托进行的,不幸的是,我并没有深入到flink的内部结构中去说,但是有了上面的解决方案,您应该是安全的。

相关问题