说明:hive版本为1.2.1
hive中reducer数量可以通过以下去设置
1.调整reduce个数方法一
(1)每个Reduce处理的数据量默认是256MB
hive.exec.reducers.bytes.per.reducer=256000000
(2)每个任务最大的reduce数,默认为1009
hive.exec.reducers.max=1009
(3)计算reducer数的公式
N=min(参数2,总输入数据量/参数1)
这个条件使用的前提是 mapreduce.job.reduces=-1 就是我们没有人为设置reducer数量,让hive自己推断
mapreduce.job.reduces=-1
2.调整reduce个数方法二
在hadoop的mapred-default.xml文件中修改
设置每个job的Reduce个数
set mapreduce.job.reduces = 15;
这个设置直接覆盖默认值-1
3. 针对特殊全局查询语句
比如全局排序的语句,只有一个reducer,不管是否设置了mapreduce.job.reduces参数
select count(*) from bigtable order by id;
类似order by 的还有distinct ,笛卡尔积,使用udtf聚集函数却没带group by等等