一:题目
Flink的interval join的实现原理?join不上的怎么办?
二:答案
底层调用的是keyby+connect ,处理逻辑:
1)判断是否迟到(迟到就不处理了)
2)每条流都存了一个Map类型的状态(key是时间戳,value是List存数据)
3)任一条流,来了一条数据,遍历对方的map状态,能匹配上就发往join方法
4)超过有效时间范围,会删除对应Map中的数据(不是clear,是remove)
Interval join不会处理join不上的数据,如果需要没join上的数据,可以用 coGroup+connect算子实现,或者直接使用flinksql里的left join或right join语法。
Flink的intervaljoin基于keyby+connect实现,主要步骤包括判断数据是否迟到、使用Map存储状态、按时间戳进行数据匹配以及定时清理过期数据。若数据无法join,则可使用coGroup或SQL的leftjoin、rightjoin来处理未匹配的数据。
1116

被折叠的 条评论
为什么被折叠?



