为什么Flink CDCupdate会先删除后插入 -u +u?一个upsert应该就行了
Flink CDC在处理数据库的UPDATE操作时,会解析为先删除旧数据,再插入新数据的过程。这是因为Flink CDC监听到的是一个组合的事件——先是一个DELETE事件(代表旧记录被逻辑删除),然后是一个INSERT事件(代表新记录被插入)。所以,即使它是一个UPDATE操作,Flink CDC也会将其视为一个先删除后插入的操作。而upsert操作是在不存在则插入,存在则更新,这在某些场景下可能会导致数据不一致的问题。因此,Flink CDC的这种设计能够保证数据的一致性和准确性。
你可以在flink中打开微批处理,就会拿一个批次中的-u +u合并为一条下发。直接过滤掉也可以,没有影响,主要看你下游使用
Configuration configuration = this.tableEnv.getConfig().getConfiguration();
configuration.setString("table.exec.mini-batch.enabled", "true");
configuration.setString("table.exec.mini-batch.size", "200000000");
configuration.setString("table.exec.mini-batch.allow-latency", "500ms");
打开这个参数,也只能保证一个批次的数据会合并,所以还是自己过滤好点 ,此回答整理自钉群“Flink CDC 社区”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。