为什么我们需要Flink中的运营商键入多个



keyedProcessFunction要求先前的操作员是操作员

当我尝试使用两个KeyedProcessFunctions处理键流时,为什么第二个功能要求我再次应用KeyedBy操作。该流不应该已经被键划分吗?

var stream = env.addSource(new FlinkKafkaConsumer[Event]("flinkkafka", EventSerializer, properties))

var processed_stream_1 = stream
                         .keyBy("keyfield") 
                         .process(new KeyedProcess1())
var processed_stream_2 = processed_stream_1
                         .process(new KeyedProcess2()) //this doesn't work

带有一些flink操作,例如Windows和Process功能,输入和输出记录之间存在某种脱节,Flink无法确保发射的记录仍在遵循原始的关键分区。如果您有信心这样做是安全的,则可以使用ReinterpretaskeyedStream而不是第二个键盘,以免避免不必要的网络混乱。

相关内容

  • 没有找到相关文章

最新更新