Flink CDC在处理数据库的UPDATE操作时,会解析为先删除旧数据,再插入新数据的过程。这是因为Flink CDC监听到的是一个组合的事件——先是一个DELETE事件(代表旧记录被逻辑删除),然后是一个INSERT事件(代表新记录被插入)。所以,即使它是一个UPDATE操作,Flink CDC也会将其视为一个先删除后插入的操作。而upsert操作是在不存在则插入,存在则更新,这在某些场景下可能会导致数据不一致的问题。因此,Flink CDC的这种设计能够保证数据的一致性和准确性。

2024-01-09 15:11:30

你可以在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 社区”

2024-01-09 12:23:18

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。