我认为你后提出的那个方法没用,不清楚你想怎么做。
这个问题本身用你的第一个方法是没问题的,误差可以再分析下,不存在你说的2个同时写入的逻辑(flink的task是单线程,不会有并发问题)。
其次,你说的第一种方法(connect)的方式,flink本身就提供了现成的实现的,即intervalJoin,貌似不需要你自己去实现。
163 <
[hidden email]> 于2020年12月4日周五 下午7:53写道:
> 想请教各位一个问题:目前有一个这样的需求:
> 两个事实流A 和B, 需要使用B 去关联A 。现在A的消息可能比B或早或晚达到,时间长度最长可能晚两天。
> 目前方案是:StreamA connect StreamB ,
> 将A、B分别去对方的mapstate中去关联,关联上则下发,关联不上则写入自己的mapstate中,等待对方来关联。但是目前还是存在一些误差,猜测是
> 部分AB的消息同时到达同时写入自身的mapstate中,无法触发关联下发。
>
> 所以目前在想了另一个方案: 将 流A写入外部kv(tair)存储中,
> 然后用B采用.iterate()的方式持续去关联tair。现在有个疑问,比如有部分数据关联不上,那么B中有消息产生死循环持续运行关联,这个问题有没有什么好的解决方案
>
>