一、hive优化核心法则:
1、保证map扫描的数据量尽量少
2、保证map传送给reduce的数据量尽量少
3、保证map和reduce处理的数据量尽量均衡
二、hive常用优化手段
1、尽量尽早的过滤数据和分组聚合,只查询需要的字段
这样做节省了读取开销,中间表存储开销和数据整合开销,是优化的核心所在。
例如:
select
...
from A
join B
on A.key = B.key where A.userid>10
and B.userid<10
and A.dt='20190417'
and B.dt='20190417';
应该改为:
select
....
from
(
select
....
from A
where dt='201900417'
and userid>10
) a
join
(
select
....
from B
where dt='201900417'
and userid < 10
) b
on a.key = b.key
;
虽然hive在这方面有优化,谓词下推 Predicate Pushdown(PPD):就是在不影响结果的情况下,尽量将过滤条件提前执行。谓词下推后,过滤条件在map端执行,减少了map端的输出,降低了数据在集群上传输的量,节约了集群的资源,也提升了任务的性能。但也是有规则的,文后附件有PDD规则表
尽量不要使用select * , 大部分场景下都不需要全部数据的,更多的是为了方便而写的。
2、尽量少用或不用count(distinct )
count(distinct