Flink CDC在这种情况下,A,B数据也不能过期,所以这个state会越来越大?假设我现在用table api对 A,B两个表做join,结果是C,那A,B两个表的原始数据是存在state里面的,C存在checkpoint里面的,这样理解对吗
是的,你的理解是正确的。在Flink的Table API中,当你对一个表进行Join操作时,输入表的每一行数据都会被加载到State中,以便在Join操作中进行匹配。这意味着,如果你的输入表非常大,那么State的大小也会相应地增大。
然而,这并不意味着State会一直保持不变。在Flink中,Checkpoint机制可以用来定期保存State的状态。当Checkpoint完成时,Flink会将State的状态持久化到存储系统中,并在后续的运算中继续使用这个State。这样,即使Flink任务失败,也可以通过恢复最近的Checkpoint来恢复State的状态,从而避免丢失数据。
所以,虽然State的大小可能会随着输入数据量的增加而增加,但是通过合理的Checkpoint策略,可以有效地管理State的大小,避免State过大导致的问题。
Flink CDC是一个实时流处理框架,其特点之一就是支持状态管理和检查点功能。在这个过程中,如果A、B两个表的原始数据需要长期保留,则它们会在状态中存储,并不会过期,除非明确设置过期时间。
假设您用Table API对A、B两张表进行join操作,结果是C,则A、B两张表的数据会被存放在状态中,C的结果数据会存在于检查点中。这样理解是对的。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。