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

请问Flink这种情况下有is_delete处理方案么?

请问Flink这种情况下有is_delete处理方案么? is_delete 软删除字段。使用Flink-CDC同步Mysql[upsert模式]数据到Hudi,然后基于Hudi建设湖仓[MERGE_ON_READ],采用的flink-sql计算,分ods、dwd、dim、dws、ads计算,分2种情况
1、Mysql中有部分数据,CDC同步之前就存在数据,这个使用使用cdc同步,+I 模式
2、实时同步,这个时候来了一条数据,后端将mysql业务库的is_delete字段进行了软删除,0->1。 对应为 -U +U.
-- 对于这个 is_delete 字段有啥好的处理方案么? 如果后端进行硬删除就没这个问题

展开
收起
真的很搞笑 2024-07-08 10:13:14 42 0
2 条回答
写回答
取消 提交回答
  • 可以采取以下方案处理Flink CDC与Hudi中is_delete软删除字段:

    存量数据同步(+I模式):
    当使用CDC同步已有数据时,is_delete为0的数据会被正常同步到Hudi表。

    实时同步(-U +U模式):
    当is_delete从0变1时,Flink CDC应捕获到这两个变更事件。在Flink SQL中,您可以创建一个视图或者在DWD层处理这些变更,将-U和+U合并为一个UPDATE事件,更新is_delete字段为1。

    -- 假设event_time是时间戳字段

    CREATE VIEW updated_records AS
    SELECT * FROM (
      SELECT *, ROW_NUMBER() OVER(PARTITION BY id ORDER BY event_time DESC) as row_num
      FROM cdc_source_table
    ) WHERE row_num = 1 AND is_delete = 1;
    

    然后使用updated_records视图进行后续的DWD、DIM、DWS和ADS层的计算。可以看下这个文档

    2024-07-08 15:19:44
    赞同 展开评论 打赏
  • 自己写逻辑直接修改row_kind,用api不用sql ,此回答整理自钉群“【②群】Apache Flink China社区”

    2024-07-08 12:28:05
    赞同 1 展开评论 打赏

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

相关产品

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

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