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

Flink CDC中flink-sql里的更新记录是一直都在的?

Flink CDC中flink-sql里的更新记录是一直都在的?image.png
image.png
image.png
image.png

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

    是的,在 Flink SQL 中,插入、删除、更新三种操作都会在流式环境中持续不断地更新,并保留一段时间的历史记录,直到被提交或达到超时时限为止。
    具体来说,在 Flink SQL 中,Table API 提供了一种类似于 SQL 的方式来操作流数据,并且支持 Insert、Delete 和 Update 三种操作。它们都会产生一个更新语句,并且保持在内存中,等待后续的操作。当出现删除或更新操作时,它会被触发并在流水线中传输到下游的 Job 之中。
    如果你想检查某一条记录是否被更新或删除,可以使用 EXISTS 和 ROW_NUMBER 函数来检索历史记录,并在每一步得到结果之前做统计分析,从而确定是否存在更新或删除记录。

    2023-11-17 15:05:57
    赞同 1 展开评论 打赏
  • Flink CDC是变更数据获取的简称,它可以从数据库中获取已提交的更改并将这些更改发送到下游,供下游使用。这些变更可以包括INSERT,DELETE,UPDATE等。Flink SQL内部支持了完整的changelog机制,所以Flink对接CDC数据只需要把CDC数据转换成Flink认识的数据。在Flink 1.11里面重构了TableSource接口,以便更好支持和集成CDC。重构后的TableSource输出的都是RowData数据结构,代表了一行的数据。在RowData上面会有一个元数据的信息,我们称为RowKind。RowKind里面包括了插入、更新前、更新后、删除,这样和数据库里面的binlog概念十分类似。通过Debezium采集的JSON格式,包含了旧数据和新数据行以及原数据信息,op的u表示是update更新操作标识符,ts_ms表示同步的时间戳。因此,Flink-sql里的更新记录是一直都在的。

    2023-11-17 10:37:07
    赞同 展开评论 打赏

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

相关产品

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

    更多
    SQL Server 2017 立即下载
    GeoMesa on Spark SQL 立即下载
    原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载