欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Hive:数据查询(5.Hive中的排序)

程序员文章站 2022-07-11 08:26:25
...

1.Order by

Order by 代表全排序
全排序: 对整个数据集进行排序! 要求只能有一个reduceTask!
导入emp和dept表!

select * from emp order by sal desc;
select * from emp order by job,sal desc;

2.Sort by

sort by代表部分排序!
部分排序: 设置多个reduceTask,每个reduceTask对所持有的分区的数据进行排序!
每个分区内部整体有序!

①需要手动修改mapreduce.job.reduces,告诉hive我们需要启动多少个reduceTask

set mapreduce.job.reduces=3

②进行部分排序

insert overwrite local directory '/home/jaffe/sortby' select * from emp sort by deptno;

sort by只是指定排序的字段,无法控制数据按照什么字段进行分区!

3.Distribute by

结合sort by一起使用!Distribute by必须写在sort by 之前! 先分区,再排序!用来指定使用什么字段进行分区!

需求: 按照部门号,对同一个部门的薪水进行降序排序,每一个部门生成一个统计的结果文件!

操作: 按照部门号进行分区,按薪水进行降序排序

insert overwrite local directory '/home/jaffe/sortby' row format delimited fields terminated by '\t'  select * from emp Distribute by deptno sort by sal desc ;

4.Cluster by

cluster by是一种简化!

如果sort by 和 distribute by的字段一致,且希望按照asc进行排序!那么可以简写为cluster by

distribute by sal sort by sal  asc  等价于   cluster by sal 

如果使用了cluster by,不支持降序,只支持升序!

5.本地模式

MR以local模式运行!数据量小,比YARN上运行要快!
设置:

set hive.exec.mode.local.auto=true;
相关标签: bigdata hive