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而不是第二个键盘,以免避免不必要的网络混乱。