Hive数据仓库踏坑(下)
Hive排序(Hive分析数据用的就是Map Reduce)
全局排序 Order By
Order By:全局排序,全局只有一个Reduce
1.使用ORDER BY子句排序
ASC(ascend):升序(默认)
DESC(descend):降序
2.ORDER BY 子句在SELECT语句的结尾
3.案列实操
(1)查询员工信息按工资升序排列
//按照工资列默认升序排列 关键字:order by
hive>select * from emp order by sal;
(2)查询员工按照工资降序排列
//只需要添加desc即可 关键字:desc
hive> select * from emp order by sal desc;
(3)按照别名排序
//按照员工薪水的2倍排列 别名:twosal
hive>select ename,sal*2 twosal from emp order by twosal;
(4)多个列排序
//按照部门和工资升序排列 swptno,sal
hive> select ename,deptno,sal from emp order by swptno,sal;
每个Map Reduce内部排序(Sort By)
Sort By :对于大规模的数据集order by的效率非常低,在很多情况下,斌不需要全局排序,此时可以使用sort by
Sort By为每一个reducer残生一个排序文件。每个Reducer内部进行排序,对全局结果集来所不是排序。
1.设置reduce个数
//默认三个
hive>set mapreduce.job.reduces=3;
2.查看设置reduce个数
hive>set mapreduce.job.reduces;
3.根据部门编号降序查看员工信息
hive>select * from emp sort by deptno desc;
4.将查询结果导入到文件中(按照部门编号降序排序)
hive>