Hive 用户配置属性有很多,包括查询引擎的、文件格式的、元数据的、HiveServer2的等等,本文主要介绍查询引擎的一些常用配置属性。另外,Hive 采用 MapReduce 和 Yarn 作为计算引擎和资源调度时,也有各自的用户配置属性,不在本文的介绍范围之内。

0x00 常用的用户配置属性

尽管Hive完整的用户配置属性有800多个,但是开发者们经过不断地迭代和使用场景的收集,对所有的配置属性都给定了默认值,来满足大部分的应用场景。在某些特定应用场景下,我们还需要手动更改配置属性,来优化查询引擎,提高执行效率。以下是一些常用的配置属性:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
set hive.execution.engine=mr;
---并行地执行作业
set hive.exec.parallel=false;
---合并小文件
set hive.merge.mapfiles=true;
set hive.merge.mapredfiles=false;
set hive.hadoop.supports.splittable.combineinputformat=false;
---分组查询时map端聚合
set hive.map.aggr=true;
---优化分组查询的数据倾斜
set hive.groupby.skewindata=false;
---优化谓词下推
set hive.optimize.ppd=true;
---启用mapjoin优化
set hive.ignore.mapjoin.hint=true;
set hive.auto.convert.join=true;
---启用倾斜连接优化
set hive.optimize.skewjoin=false;
---设置reduce任务数
set mapred.reduce.tasks=-1;
set hive.exec.reducers.bytes.per.reducer=256000000;
set hive.exec.reducers.max=1009;
---启用reduce任务的推测执行
set hive.mapred.reduce.tasks.speculative.execution=true;
---启用动态分区
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=strict;
---查询的最终输出是否压缩
set hive.exec.compress.output=false;
---矢量化查询
set hive.vectorized.execution.enabled=true;
set hive.vectorized.execution.reduce.enabled=true;
---基于成本的优化CBO
set hive.cbo.enable=true;
set hive.compute.query.using.stats=true;
set hive.stats.fetch.column.stats=true;
set hive.stats.fetch.partition.stats=true;

当然,以上的每一种业务场景都会有一套配置属性,这里就不一一列举了,后期碰到了具体业务场景再进行补充。

参考文献

Hive Configuration Properties