Как объединить два потока с более чем одним ключом соединения - PullRequest
0 голосов
/ 22 сентября 2019

Следующий фрагмент кода скопирован из javadoc JoinedStreams

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

Ответы [ 2 ]

1 голос
/ 22 сентября 2019

Ваши ключевые селекторы могут возвращать кортеж, т. Е.

.where {t => (t.a, t.b)}
.equals {t => (t.a, t.b)}
1 голос
/ 22 сентября 2019

Используя KeySelector при соединении, вы можете создать кортеж для представления двух ключей.

...