hive倾斜处理

本文介绍了Hive中数据倾斜的现象、原因及解决方案,主要针对join和group by操作。倾斜表现为部分reduce任务耗时过长,单个key数据量过大等。解决方法包括:1) 对空值、缺省值或特殊值进行特殊处理;2) 对大表进行预处理,如去重或切片,以利用MapJoin;3) 切分Join表,通过多次MapJoin合并结果。
摘要由CSDN通过智能技术生成
倾斜在两种使用情形中出现 
1 join 
2 group by

倾斜表象
1.任务进度长度为99%,在任务监控页面中发现只有几个 reduce 子任务未完成;
2.单一 reduce 记录与平均记录数差异过大(大于3倍),最长时长>>平均时长;
3.某一个key值数据量过大导致jvm内存溢出,mr作业报错

现象原因
1. Map输出key数量极少,导致reduce端退化为单机作业或者集群资源没有充分利用
2. Map输出key分布不均,少量key对应大量value,导致reduce端单机瓶颈或者集群资源没有充分利用

join
备注在前面1: 大表有时候不是真正的大表,比如日志表的用户信息,很多时候对用户去重之后就没有之前那么大了
备注在前面2: [大表和小表inner join 或者 大表 left join小 ]的时候小表数据量<大小表阀值(hive.mapjoin.smalltable.filesize)时,默认走mapjoin(前提是hive.auto.convert.join 默认为 true) Q1:待验证:已验证

案例1 驱动表键空值/缺省值/极少特殊值导致数据倾斜
select * </
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值