开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

为什么Flink CDCupdate会先删除后插入 -u +u?

为什么Flink CDCupdate会先删除后插入 -u +u?一个upsert应该就行了

展开
收起
真的很搞笑 2024-01-09 11:43:37 315 0
2 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    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 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载