求大佬解答一下,我现在有个flink cdc任务,会计算不用的结果列,根据不同属性的列,我分了多个sink table,但是都是写入同一个mysql物理表中,ddl我也定义了主键,应该是开启了upsert的语义的,但是mysql结果表中还是会出现,结果被某些sink 算子直接覆盖了,并没有只是修改对应的列的情况,这种现象需要怎么处理呢?
确认sink算子是否存在写入同一行数据的情况。可以在MySQL表中添加一个自增主键,查看是否存在相同的主键值。
确认在写入MySQL表时是否使用了正确的upsert语义。upsert语义可以确保在更新或插入数据时不会覆盖原有的数据,而只是修改对应的列。在Flink中,可以使用upsert()方法指定upsert语义。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。