环境:公司决定使用宽表,将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