IntervalJoin
实现细节在 IntervalJoinOperator
- 为 LeftStream RightStream 分别初始化一个对应的 MapState,用来存储等待 Join 的数据,Key:element 的时间戳,Value:用于存储相同时间戳的所有 element 的 List
- 每来一个 element,做以下三件事,processElement1 + processElement2:
- 遍历另一个 Stream 的 MapState,取符合条件的 element 做 join
- 将 element 存入自己流(Left or Right Stream)的 MapState
- 根据 element 过期配置,在 TimerService 注册 TimerEvent,TimerEvent 触发时会根据时间戳从 MapState 清理掉相应的 elements
暂无评论...