p26-p30
Hive优化_GroupBy:
- 并不是所有聚合操作都在reduce端完成,很多聚合操作可以在map端执行,然后在reduce端得到最终结果
(1)Map是否需要聚合设置为true:
set hive.map.aggr=ture;
(2)设置在Map端进行聚合操作的条目数目:
set hive.groupby.mapaggr.checkinterval=10000;
(3)有数据倾斜的时候进行负载均衡(默认为false):
set hive.groupby.skewindata=true;
Hive优化_去重统计:
- 一般count distinct使用先groupby在count的方式
select count(id) from (select id from bigtable group by id) a;
Hive优化_行列过滤:
- 先进行子查询,再进行表join操作以减小计算量
- 下面是先子查询,后join的方法
select b.id from bigtable b
join (select id from smalltable where id<=10) s on b.id=s.id;
下面是先join后设置查询条件的做法(速度慢,计算量大):
select b.id from bigtable b
join smalltable s on s.id=b.id
where s.id<=10;
网友评论