-- order by 全局有序,只有一个reduce--1.使用 ORDER BY 子句排序--ASC(ascend): 升序(默认)--DESC(descend): 降序--2.ORDER BY 子句在 SELECT 语句的结尾
select *
from emp
order by sal desc;
-- 按照别名排序
-- 按照员工薪水的 2 倍排序
select e.ename, e.sal * 2 twosal
from emp e
order by twosal desc;
-- 多个列排序
-- 按照部门和工资升序排序
select *
from emp e
order by deptno, sal
-- 每个 MapReduce 内部排序(Sort By)
-- Sort By 每个reduce内排序,对结果集来说不是排序
-- 1.设置 reduce 个数
set mapreduce.job.reduces = 3;
-- 2
-- .查看设置 reduce 个数
set mapreduce.job.reduces;
-- .根据部门编号降序查看员工信息
select *
from emp e sort by e.empno desc;
-- 4 .将查询结果导入到文件中(按照部门编号降序排序
insert overwrite local directory '/opt/module/datas/sortby-result'
select *
from emp sort by empno desc;
-- 分 区排序( Distribute By
-- Distribute By
-- :类似 MR 中 partition ,进行分区,结合 sort by 使用。
-- 注意, Hive 要求 DISTRIBUTE BY 语句要写在 SORT BY 语句之前。
-- 对于 distribute by 进行测试,一定要分配多 reduce 进行处理,否则无法看到 distribute by
-- 的效果。
-- 1 )先按照部门编号分区,再按照员工编号降序排序。
set mapreduce.job.reduces =3;
insert overwrite local directory '/opt/module/datas/distribute-result2'
select *
from emp e distribute by e.deptno sort by empno;
-- Cluster By
--当distribute by 和 sorts by 字段相同时,可以使用 cluster by 方式。
-- cluster by
-- 除了具有 distribute by 的功能外还兼具 sort by 的功能。但是排序 只能是 升 序排
-- 序 不能指定 排序 规则 为 AS C 或者 DESC 。
select * from emp cluster by empno;
-- 等价于
select * from emp distribute by empno sort by empno;