我有一个包含表T1(id,name,age)和T2(id,subject)的数据库。Flink使用诸如debezium之类的东西从事件流接收来自数据库的所有更新。这些表被彼此相关的和所需的数据可以由被提取接合 T1与T2上的id。目前,数据库的整个状态存储在Flink MapState中,其中id为密钥。现在的问题是,我需要选择基于行的名字从T1不使用的ID。好像我需要T1上的索引(名字)使它更快。有没有什么方法可以自动索引它,而无需为每个表手动创建索引。这样做的推荐方法是什么?我知道表上的SQL流,但我需要支持表的更新。顺便说一下,我使用Flink和Scala。
我的理解是你连接T1和T2,并存储一些表示(在MapState中)来自这两个流的键控状态的数据,由id键入。听起来T1和T2随着时间的推移而发展,并且您希望能够通过指定名称随时以交互方式查询联接。
一种想法是以您想要选择的名称进行广播,并使用KeyedBroadcastProcessFunction来处理它们。在其processBroadcastElement方法中,您可以使用ctx.applyToKeyedState通过从MapState记录中提取数据来计算结果(必须在此运算符中保存)。我怀疑你会想要使用这些名称作为这些MapState记录中的键,这样你就不必迭代每个map中的所有条目来找到感兴趣的项目。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。