我有2个事件流,其中一个是flatmap
的结果。我想加入所有具有共同标识符的事件。
因此,我看起来像:
DataStream<TypeA> streamA = ...
DataStream<TypeB> streamB = someDataStream.flatMap(...) // produces stream of TypeB for each item in someDataStream
TypeA
和TypeB
都共享一个标识符,我知道父对象中有多少TypeB
个对象。当与特定标识符关联的所有事件都到达时,即我基本上可以创建Tuple3<id, TypeA, List<TypeB>>
对象时,我想执行一些处理。
最好使用WindowJoin
和GlobalWindow
,Window CoGroup
和GlobalWindow
或将两个流连接到ConnectedStream
然后执行CoProcessFunction
内的联接?
答案 0 :(得分:0)
Windows是Flink模拟批处理的方式,认为这不是您要搜索的内容。
只需制作
streamA.keyBy(element.getFieldToKey).connect(streamB.keyBy(element.getFieldToKey))
然后,您可以应用CoProcess或CoFlatMap函数,其中IN1为StreamA类型,IN2为StreamB类型。 OUT是您的结果类型。