flink 问题总结(7)下一级任务没有keyby导致的错误

请移步 flink问题总结目录 (不断更新中)

问题:

任务处理中会出现没有正确分组的问题。
如下图:第三级处理的结果有误。

分析原因:

修改前

上图任务可以看到第一级处理之后,有keyby操作,而2到3级之间没有keyby,所以是rebalance操作。

解决办法:

方法一:如果第三级需要和上级一样根据用户id 分到同一个现成的话会出现问题,所以需要对第二级操作之后也keyby。


修改后

方法二:如果二级和三级处理可以转为operator-chain,那么可以不用2到3级中间可以不用keyby操作。因为operatorchain会将任务在同一个task里执行。

mongo问题

mongo中使用updateOne方法,如果同一个key,两个线程同时写会报错

E11000 duplicate key error collection

原因:

update操作是先查询是否存在,不存在会插入。当两个任务同时都查询到不存在时,都会执行insert操作,所以会报错重复key。

解决办法:

加锁,或者任务顺序执行。

你可能感兴趣的:(flink 问题总结(7)下一级任务没有keyby导致的错误)