欢迎光临散文网 会员登陆 & 注册

Flink中数据倾斜问题怎么解决?

2023-06-27 14:00 作者:ingemar-  | 我要投稿

通过循环的方式依次发送到下游的task


问题产生背景


Flink也有数据倾斜的时候,比如当前有数据量大概10亿条数据需要处理,在处理过程中可能会发生如图所示的状况:

这个时候本来总体数据量只需要10分钟解决的问题,出现了数据倾斜,机器1上的任务需要4个小时才能完成,那么其他3台机器执行完毕也要等待机器1执行完毕后才算整体将任务完成;

所以在实际的工作中,出现这种情况比较好的解决方案就是本节课要讲解的—rebalance


源码解读



图解



步骤


构建批处理运行环境

使用 env.generateSequence 创建0-100的并行数据

使用 fiter 过滤出来 大于8 的数字

使用map操作传入 RichMapFunction ,将当前子任务的ID和数字构建成一个元组

在RichMapFunction中可以使用 getRuntimeContext.getIndexOfThisSubtask 获取子任务序号

打印测试


举例


在不使用rebalance的情况下,观察每一个线程执行的任务特点

使用rebalance


Flink中数据倾斜问题怎么解决?的评论 (共 条)

分享到微博请遵守国家法律