flink1.6流式传输非窗口LEFT OUTER JOIN乱序

时间:2018-10-12 04:01:45

标签: apache-flink

Streaming non window left outer join是flink1.6中的新功能。当我在两个动态表之间进行操作时。连接结果出现故障。我应该如何正确使用此功能? 这两个动态表均按data_update_time排序。 NonWindowJoin左表状态和右表状态均使用flink管理状态MapState。当我查看flink的non window join代码时。我感到困惑: (1)NonWindowJoin.scala code MapState的键是Row对象。 hashCode的{​​{1}}和equal函数由Row的所有字段确定。因此,如果流事件来自mysql数据库的Row,则binlog将始终追加(不更新)。该MapState[Row, JTuple2[Long, Long]]将记录与mysql数据库中相同记录的变更日志。我怀疑联接结果的顺序是否不确定? (2)进行迭代时,是否按放置状态的顺序遍历? (3)如何查找加入结果的原因。

1 个答案:

答案 0 :(得分:0)

不能保证连接结果的顺序。就像在关系数据库中一样,Flink的联接以便于实现和高效实现的顺序生成结果。通过MapState对象联接迭代,这些迭代器的具体顺序取决于所使用的状态后端。