请问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 字段有啥好的处理方案么? 如果后端进行硬删除就没这个问题
可以采取以下方案处理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层的计算。可以看下这个文档
自己写逻辑直接修改row_kind,用api不用sql ,此回答整理自钉群“【②群】Apache Flink China社区”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。