造成数据倾斜的原因:
key 分布不均匀
业务数据本身的特性
建表考虑不周全
某些 HQL 语句本身就存在数据倾斜
产生数据倾斜的业务场景
1.空值产生的数据倾斜
在日志中,常会有信息丢失的问题,比如日志中的 user_id,如果取其中的 user_id 和用户表中的 user_id 相关联,就会碰到数据倾斜的问题。
解决方案 1:user_id 为空的不参与关联
select * from log a join user b on a.user_id is not null and a.user_id = b.user_id
解决方案 2 赋予空值新的 key 值
select * from log a left outer join user b on
case when a.user_id is null then c

本文探讨了Hive中数据倾斜的成因,包括key分布不均、业务数据特性、建表不当及HQL语句问题。提到了空值、不同数据类型关联、大小表关联、小文件过多和count(distinct)操作引发的数据倾斜场景,并给出了相应的解决方案,如赋予空值新key、转换数据类型、使用map join和调整Hive参数等。
最低0.47元/天 解锁文章
894

被折叠的 条评论
为什么被折叠?



