hive优化
- explain执行计划(hive底层计算框架是通过mapreduce实现的,所以查看执行计划,可以很好的去优化hive)
EXPLAIN [EXTENDED|DEPENDENCY|AUTHORIZATION] 查询语句
- join,尽量避免子查询
- 分区分桶,避免全表扫描
- 谓词下推
- 本地模式,如果计算量不大可以设置在本地运行
set hive.exec.mode.local.auto = true;
- 严格模式
set hive.mapred.mode = strict;
严格,模式下禁止三种查询:
1、对分区表查询时,where中过滤字段不是分区字段(避免全表扫描)
select uid,commentid from dyp2 where recommentid >1000 这种查询不允许
2、笛卡尔积的join查询,join语句不带on条件或者where条件
3、对order by查询,有order by不带limit语句
- 左连接的时候,如果不用select右表的数据则可以选择left semi join
- limit的优化,尽量少查数据
- 并行执行,查询语句如果多个select没有联系的话,并行执行可以大大所短时间,比如:
两个表union的话,并行执行可以缩短很多时间
#打开任务并行执行
set hive.exec.