hive上亿级别的表关联 调优

本文讲述了在处理上亿级别数据表关联时遇到的性能问题,通过研究发现,由于使用了order by、笛卡尔积等操作导致Hive只分配了一个reduce任务。通过增加聚合函数、调整表关联顺序以及启用并行执行,成功将运行时间从3小时降低到15分钟,实现了调优。同时,文章提醒注意并行执行的资源需求,并鼓励IT领域的知识分享与交流。
摘要由CSDN通过智能技术生成

环境:公司决定使用宽表,将10个相关的大表进行全量关联

(1个上亿级别的表,5个上千万的表,剩下的表都不到百万的表)


花了两天的时间研究,测试

例如: a~g这几个表中,a表为上亿级别的表,5个上千万的表,剩下为表都百万的表

select a.uesrid,b.citycode,b.register_num,  ...  ,g.active_num 
from
(select userid,citycode from a)
left outer join
(select userid,register_num from b)
on (a.userid=b.userid)
...
left outer join
(select userid,active_num from g)
on (a.userid=b.userid)

你会发现
最后一个job异常慢,并且reduce为1。


也多人会说,你傻逼呀,设置reduce数呀,对这是一个好办法,但是结果如何呢?

#设置传输格式
set mapred.output.compress=true;  
set hive.exec.compress
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值