记录一次spark2.x数据倾斜(隐藏的笛卡尔积)排查处理过程

本文记录了一次Spark2.x数据倾斜的排查过程,问题表现为任务执行失败,时间延长。尝试调整参数未完全解决问题,通过查看SQL流程图发现隐藏的笛卡尔积。源头是新用户表中的数据重复,通过去重处理解决了问题,最终任务运行时间缩短到3分钟。
摘要由CSDN通过智能技术生成

目录

一、问题描述

二、尝试调整参数

三、查看spark具体sql流程图


一、问题描述

有一个dwd层中间表的入表任务,有几天的日期永远无法执行成功,平时的任务时间大概在2分钟。之前也遇到过一次这样的情况,是通过排查脏数据得到了解决(长字符串id中有不规则脏字符),这次实在没有头绪。

二、尝试调整参数

因为查看yarn任务的页面,发现总是报错在拒绝连接,看到有个别任务总是执行半天卡住,并且shuffle的records数量也明显高于其他exceutor,并且不仅spill到内存,甚至到了磁盘,说明还是数据倾斜。于是上网查找优化资料,陆续调整了几个参数:

--conf spark.shuffle.sort.bypassMergeThreshold=5000 (该参数应该是设置不合理,作用也不明显,后剔除)

--conf spark.reducer.maxSizeInFlight=256M

--conf spark.shuffle.file.buffer=96K

当加上第3个参数之后,任务不会那么快跑崩了,但最后还是存在问题。

也考虑在join的key上增加随机数前缀(2表关联,a表增加0-n随机数前缀,b表扩充随机数范围的n倍(0到n每个都作为前缀放到b表前,这样保证能和a表关联上)),但是任务sql较大,关联表过多,所以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值