不会吧,不会还有人解决不了数据倾斜吧

数据倾斜的表现

表现体现在数据处理任务进度长时间维持在 99%(或100%),查看任务监控页面,发现只有少量(1 个或几个)reduce 子任务未完成。因为其处理的数据量和其他 reduce 差异过大。单一 reduce 的记录数与平均记录数差异过大,通常可能达到 3 倍甚至更多,最长时长远大于平均时长。

倾斜产生的原因及解决办法

空值产生的数据倾斜

果两个表连接时,使用的连接条件有很多空值,会造成有 null 关联的那个分区数据特别多,可以在连接条件中增加过滤,去除空值。

select *
from user join log on user.id = log.userid and log.userid is not null

大小表连接

看这个join 到底是 map端的 join 还是reduce 端的 join,map 端的 join 效率高、并行度高,不容易产生数据倾斜,map 端的join擅长大小表关联,此时将小表放在内存里,在map 端做join

select /*+mapjoin(a)*/,b.*
from a join b on a.** = b.**

码字不易废话两句:有需要python学习资料的或者有技术问题交流 “点击”即可

两个表连接的数据字段不一致

将连接条件的字段数据类型转化成一致。

elect * from users a
left join logs b
on a.usr_id = cast(b.user_id as string)

以上就是小编今天为大家带来的内容,小编本身就是一名python开发工程师,我自己花了三天时间整理了一套python学习教程,从最基础的python脚本到web开发,爬虫,数据分析,数据可视化,机器学习,等,这些资料有想要的小伙伴 " 点击 " 即可领取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值