学习 Flink(八):Streaming Join

Streaming Join 与 Join 的区别,在于增加了时间维度。

Flink 支持两种类型的 Streaming Join:

  • Window Join 窗口连接
  • Interval Join 间隔连接

示例数据流:

数据流 L

ID NAME TIME
1 L1 12:00
2 L2 12:01

数据流 R

ID NAME TIME
1 R1 12:00
3 R3 12:01

Window Join

Window Join 连接两个有共同键和相同窗口的两个数据流。

条件,streamL.ID = streamR.ID,固定窗口大小为 1 分钟:

streamL.join(streamR)  
    .where(elem => /* select key */)
    .equalTo(elem => /* select key */)
    .window(TumblingEventTimeWindows.of(Time.minutes(1)))

结果:

L1, R1  

Interval Join

TODO