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

flinkcdc回撤流 如果更新之前的数据 会把先前的数据删除,再插入更新的数据?

flinkcdc回撤流 如果更新之前的数据 会把先前的数据删除,再插入更新的数据?

展开
收起
真的很搞笑 2023-12-10 20:56:34 178 0
4 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在Flink的流处理中,存在所谓的"回撤流",它有能力对历史数据进行更新。然而,这并不意味着它会直接修改已经发送到下游节点的历史数据。相反,如果发现某些错误数据,它可以通过撤回操作来纠正这些错误数据。具体来说,所谓的"回撤",可以理解为传统数据处理中的"更新"操作,它是流式计算场景下对数据更新的一种处理方式。

    对于Flink CDC而言,其主要是基于Change Data Capture(CDC)技术的数据同步工具,将关系型数据库中的数据实时同步到Flink流处理中进行实时计算和分析。因此,如果在更新过程中遇到需要回撤的情况,Flink CDC会通过撤回操作来进行数据的修正,而非直接删除并插入新数据。

    2023-12-11 16:21:43
    赞同 展开评论 打赏
  • 正常是会直接更新的,你这个不是直接写到数据库吧 ,此回答整理自钉群“Flink CDC 社区”

    2023-12-11 11:58:09
    赞同 展开评论 打赏
  • 是的,Flink CDC的回撤流机制确实是这样的。当一条数据被更新时,Flink CDC会先发送一条删除旧数据的消息,然后再发送一条插入新数据的消息。这样可以确保数据的准确性和一致性,同时也保证了CDC场景下的正确语义。

    2023-12-11 08:59:46
    赞同 展开评论 打赏
  • 在Flink CDC中,回撤流(Retract Stream)是用于表示更新操作的一种流式数据格式。当更新之前的数据需要更新时,Flink CDC会将先前的数据标记为撤回(Retract),然后插入更新后的数据。

    具体来说,当Flink CDC从数据源中获取到一条更新操作时,它会将更新前的数据标记为撤回,并将撤回的数据和更新后的数据一起发送到回撤流中。这样,接收回撤流的下游处理程序可以根据撤回标记对数据进行处理。

    实际上,回撤流中的数据包含两种类型的记录:撤回记录(Retract Record)和插入/更新记录(Insert/Update Record)。撤回记录表示更新前的数据,插入/更新记录表示更新后的数据。下游处理程序可以根据撤回记录将撤回的数据从最终结果中删除,并根据插入/更新记录将更新后的数据插入或更新到最终结果中。

    2023-12-11 08:59:44
    赞同 展开评论 打赏

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

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载