Flink 并发修改 Doris 同一条数据的两个字段, 只能成功修改其中一个字段.

2022/12/06 菜鸟记录.

场景: Doris 的并发update 配置已打开 (enable_concurrent_update = true).

         Flink任务1: 监听Kafka TopicA 修改表1某条数据的a字段. 

         Flink任务2: 监听Kafka TopicB 修改表1某条数据的b字段. 

         当后端人员同时向TopicA和TopicB发送数据, 并且修改的是同一条数据的a和b时, 结果只能成功修改其中一个. 后台不报错. 

背景: Flink版本 1.14.4

         Doris版本 1.1.0

原因: Doris 目前支持的是行更新,  就算我只更新一个字段, 其他所有字段的值也会被覆盖一遍. 而且 Doris 是先读在写, 假如原始数据为 (null,null), 两次update并发执行, 会先并发读取这一行的原始数据,两次update读取的都是 (null,null),  再分别修改成 (a,null) 和 (null,b). 然后行更新, 覆盖写, 要么 (a,null) 覆盖 (null,b), 要么反之, 于是出现了这种只能修改成功一个字段的结果.

解决: 在两次update之间加一个延时, 让后端人员在两次发送Kafka之间sleep一下.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值