如何使用多个连接键连接两个流

jm2pwxwz  于 2021-06-24  发布在  Flink
关注(0)|答案(2)|浏览(290)

下面的代码片段是从joinedstreams的javadoc复制的

val one: DataStream[(String, Int)]  = ...
val two: DataStream[(String, Int)] = ...

val result = one.join(two)
    .where {t => ... }
    .equal {t => ... }
    .window(TumblingEventTimeWindows.of(Time.of(5, TimeUnit.SECONDS)))
    .apply(new MyJoinFunction())

两个流仅基于一个键(通过 t => ... )例如, one.a = two.a ,
我会问我怎样才能基于多个键进行连接,例如,one.a=two.a和 one.b = two.b

mtb9vblg

mtb9vblg1#

通过在join时使用keyselector,可以生成一个元组来表示两个键。

qv7cva1a

qv7cva1a2#

您的键选择器可以返回一个元组,即。,

.where {t => (t.a, t.b)}
.equals {t => (t.a, t.b)}

相关问题