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;
上一篇: Mysql replace替换用法
下一篇: hive数据查询导出
推荐阅读
-
使用JDBC从数据库中查询数据的方法
-
为什么无法使用php中mysqli的准备语句进行数据库中数据的查询(绑定参数或者绑定结果),项目急用!该如何处理
-
SQL语句查询数据库中重复记录的个数
-
MySql数据库中的子查询与高级应用浅析
-
Oracle数据库中查询连接数的实用sql语句
-
为什么无法使用php中mysqli的准备语句进行数据库中数据的查询(绑定参数或者绑定结果),项目急用!该如何处理
-
Sql Server中查询当天,最近三天,本周,本月,最近一个月,本季度的数据的sql语句
-
查询一个表中名字相同的数据,并且显示出来,并且显示重复个数
-
使用C#对MongoDB中的数据进行查询,修改等操作
-
sqlserver isnull在数据库查询中的应用