flink cdc 的join 是真的把维表数据都加载到rocksdb里了吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在Flink CDC(Change Data Capture)应用中,如果配置了维表JOIN并且使用了Cache策略,确实可以将维表数据加载到RocksDB中以加速查询。具体来说:
ALL缓存策略:当采用ALL缓存策略时,Flink会在Job运行前将维表中的所有数据加载到RocksDB缓存中。这意味着,对于每条流式数据的处理,系统会直接从RocksDB缓存中查找维表数据,而无需每次都访问远程维表。这种方式适用于维表数据量不大且JOIN操作MISS KEY情况较多的场景。但需要注意,全量缓存有一个过期时间,过期后会重新加载,并且要确保节点内存足够,防止OOM(Out Of Memory)问题,可能需要为维表JOIN节点分配的内存是远程表数据量的两倍。
LRU缓存策略:对于LRU(Least Recently Used)策略,RocksDB会缓存维表的部分数据,基于最近最少使用原则淘汰旧数据,保持热点数据的高效访问。
综上所述,当配置得当时,Flink CDC的JOIN操作确实能够利用RocksDB作为缓存,将维表数据加载其中,从而提升数据处理的效率和速度。不过,具体实现细节还需根据所使用的连接器及其支持的Cache策略来确定。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。