1.全局排序 order by

使用orderby对全局进行排序的前提是只能有一个reduce。order  by ASC升序,order by DESC降序。

hive表查询——排序

 

 order by 列别名:按照别名升序排序

hive表查询——排序

 

 order by 列名1 列名2:先按照列名1的升序排序,如果相等再按照列名2进行排序

hive表查询——排序

 

 2.局部排序 sort by

sort by会对每个mapreduce内部进行排序,对全局结果来说并不完全有序。

使用sort by排序的过程:

2.1设置reduce的个数

2.2使用sort by查询语句进行排序

2.3将查询结果导入文件中

hive表查询——排序

 

 hive表查询——排序

 

hive表查询——排序

 

 3.分区排序 distribute by

distribute by将数据进行分区,结合sort by使用对不同分区进行排序

在使用这个语法前要先设置分区的个数同2.1

hive表查询——排序

 先按照s_id进行分区,再按照s_score进行排序,最后将查询的结果加载到本地

结果:

hive表查询——排序

hive表查询——排序

 

 在这个文件中记录的都是id为04的数据,可见distribute by的作用,第三栏是成绩,按照升序排列,可见sort by的作用。

 4.cluster by

当distribute by的字段与sort by字段相同时可以使用cluster by,但是cluster by的排序只能是倒序,不能指定ASC或者DESC

以下两种写法等价

hive表查询——排序

 

相关文章:

  • 2022-02-13
  • 2021-08-19
  • 2021-09-27
  • 2021-10-15
  • 2022-02-05
猜你喜欢
  • 2021-08-09
  • 2021-06-09
  • 2021-12-22
  • 2022-12-23
  • 2021-11-29
  • 2022-01-18
  • 2021-10-15
相关资源
相似解决方案