一 关于Reduce的设置
1.1设置每个reduce处理的数据量
hive.exec.reducers.bytes.per.reducer=<number>
1.2设置最大运行的reduce的个数
hive.exec.reducers.max=<number>
1.3实际的reduce的个数
mapreduce.job.reduces=<number>
二 Hive中几种类型的排序
order by全局排序,对于多个reduce就没有用了
sort by 对于每一个reduce结果进行排序
将reduce的个数设为三个,然后测试
INSERTOVERWRITE LOCAL DIRECTORY '/opt/data/emp_sort' ROW FORMAT DELIMITED FIELDSTERMINATED BY '\t' SELECT * FROM emp SORT BY sal;
运行结果应该是有三个文件,每一个reduce对应着一个
然后按照sal进行升序排序
distributed by: 底层就是mapreduce的分区,一般与sort by连用
insertoverwrite local directory '/opt/datas/emp_distribute'
rowformat delimited fields terminated by '\t'
select* from emp distribute by deptno sort by sal;
运行结果应该是有三个文件,每一个reduce对应着一个,然后每一个文件根据三个不同deptno进行分区,然后按照sal进行升序排序
cluster by: 等价于distributeby fields 与sort byfields的字段相同时
insertoverwrite local directory '/opt/data/emp_cluster'
rowformat delimited fields terminated by '\t'
select* from emp cluster by sal;
运行结果应该是有三个文件,每一个reduce对应着一个,然后每一个文件根据三个不同sal进行分区,然后按照sal进行升序排序