Apache flink Apache flink作业中的一个对象flink运算符(例如筛选器)或两个对象

Apache flink Apache flink作业中的一个对象flink运算符(例如筛选器)或两个对象,apache-flink,flink-streaming,flink-cep,Apache Flink,Flink Streaming,Flink Cep,我有ApacheFlink任务,其中包含来自不同ApacheKafka主题的4个输入数据流(JSON消息),我只有一个对象XFilterFunction,它执行一些过滤。我编写了一些数据管道逻辑(例如原语): FilterFunction xFilter=new XFilterFunction(); inputDataStream1.filter(xFilter) .name(“Xfilter”) .uid(“Xfilter”); 输入数据流2 .union(inputDataStream3)

我有ApacheFlink任务,其中包含来自不同ApacheKafka主题的4个输入数据流(JSON消息),我只有一个对象XFilterFunction,它执行一些过滤。我编写了一些数据管道逻辑(例如原语):

FilterFunction xFilter=new XFilterFunction();
inputDataStream1.filter(xFilter)
.name(“Xfilter”)
.uid(“Xfilter”);
输入数据流2
.union(inputDataStream3)
//这里是一些逻辑(映射、过程等)
.过滤器(xFilter);
在作业中使用一个新对象XFilterFunction是好的还是坏的做法

或者更好地使用两个新对象XFilterFunction?(2个流->2个新筛选对象)

如果多次实例化该类,即

inputDataStream1.filter(new XFilterFunction());
...
inputDataStream2.filter(new XFilterFunction());
应该没有问题。我不太确定状态或重写的上下文函数是否会显示不需要的行为。 如果它不是
RichFunction
的专门化,那么可能仅仅是通过委托进行的纯函数调用,不幸的是,我并没有深入到Flink的内部结构中去说,但是使用上面的解决方案,您应该是安全的

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