管报数仓规则匹配任务优化

优化前:sql逻辑不复杂,只是中间用到了一个udtf函数,函数处理逻辑非常复杂,先付一张sql图

这里涉及到大表join小表,所以采用了mapjoin,去掉reduce过程,然后重新定义文件数量,让多个map去并行。关键点在于udtf函数逻辑过于复杂,而且传入的拼接字段,每个月会有4万左右数据,拼接后的字符串相同,这样就会导致这些数据进了同一个map,同时由于udtf逻辑复杂,所以这两个map会一直跑,由此出现了map端的数据倾斜。运行时长在90分总以上,由于等不了,就停了,没有具体看过多久执行完

优化方式:这里是由于出现了map端的数据倾斜,所以第一步:通过distribute by rand() 将数据打散,随机放到不同的map去执行。第二步:与此同时,就会产生reduce的个数,此时再去手动设置reduce个数,我设置的是250个。第三步:为了保险起见把拼接的20几个字段再多拼接一个rand(),这里注意第三步如果不做,前两步是没有效果的。

 

优化后:没有了数据倾斜,运行时长为13分钟

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值