Hive参数优化

 

在mapper端执行join:

set hive.auto.convert.join=true;

 

启用本地模式:

set hive.exec.mode.local.auto=true;

启用并行执行:

set hive.exec.parallel=true;

 

启用严格模式/非严格模式:

set hive.mapred.mode=strict;

set hive.mapred.mode=nonstrict;

严格模式可以禁止以下三种查询:

1、对于分区表的查询必须限定where条件;

2、order by语句的查询必须使用limit;

3、限制笛卡尔积的查询。

 

调整每个reducer处理的数据文件大小:

set hive.exec.reducers.bytes.per.reducer=750000000;//单位为B

调整reducer的个数:

set mapred.reduce.tasks=4;

设置允许启用的最大reducer个数:

set hive.exec.reducers.max=8;

取消动态分区的严格模式(严格模式下,必须至少保证一个分区是静态的):

set hive.exec.dynamic.partition.mode=nonstrict;

 

解决数据倾斜:

set hive.map.aggr=true;//在mapper端聚合

set hive.groupby.skewindata=true;//相同的key也能随机分发给不同的reducer

set hive.optimize.skewjoin=true;//解决join类倾斜

 

待补充。

上一篇:SQL-存储过程


下一篇:Redis-事务