在参考Flink代码示例时,我观察到当使用connect
运算符连接两个流时,当在键控流上操作时,coProcessFunction
和keyedCoProcessFunction
几乎可以互换和相同地扩展(覆盖processElement1
、processElement2
和onTimer
(,那么,当对键控流进行操作时,与keyedCoProcessFunction
相比,扩展CoProcessFunction
以实现键控连接流的业务逻辑有什么区别?
谢谢。
KeyedCoProcessFunction
和KeyedProcessFunction
是最近添加的。与非键控风格相比,不同之处在于当前键在传递给各种processElement和onTimer方法的Context
中可用。
如果您尝试在ProcessFunction或CoProcessFunction中使用键控状态或计时器,那么如果您实际处于键控上下文中,它将起作用,如果您不在键控上下文中将抛出异常。