一 关于Reduce的设置
1.1设置每个reduce处理的数据量
mapreduce为什么要排序,hive.exec.reducers.bytes.per.reducer=<number>
1.2设置最大运行的reduce的个数
groupby后排序,hive.exec.reducers.max=<number>
1.3实际的reduce的个数
java map 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进行升序排序
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态