想请教各位一个问题:目前有一个这样的需求:
两个事实流A 和B, 需要使用B 去关联A 。现在A的消息可能比B或早或晚达到,时间长度最长可能晚两天。
目前方案是:StreamA connect StreamB , 将A、B分别去对方的mapstate中去关联,关联上则下发,关联不上则写入自己的mapstate中,等待对方来关联。但是目前还是存在一些误差,猜测是 部分AB的消息同时到达同时写入自身的mapstate中,无法触发关联下发。
所以目前在想了另一个方案: 将 流A写入外部kv(tair)存储中, 然后用B采用.iterate()的方式持续去关联tair。现在有个疑问,比如有部分数据关联不上,那么B中有消息产生死循环持续运行关联,这个问题有没有什么好的解决方案
*来自志愿者整理的flink邮件归档
我认为你后提出的那个方法没用,不清楚你想怎么做。
这个问题本身用你的第一个方法是没问题的,误差可以再分析下,不存在你说的2个同时写入的逻辑(flink的task是单线程,不会有并发问题)。
其次,你说的第一种方法(connect)的方式,flink本身就提供了现成的实现的,即intervalJoin,貌似不需要你自己去实现。
*来自志愿者整理的flink邮件归档
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。