1.全局排序 order by
使用orderby对全局进行排序的前提是只能有一个reduce。order by ASC升序,order by DESC降序。
order by 列别名:按照别名升序排序
order by 列名1 列名2:先按照列名1的升序排序,如果相等再按照列名2进行排序
2.局部排序 sort by
sort by会对每个mapreduce内部进行排序,对全局结果来说并不完全有序。
使用sort by排序的过程:
2.1设置reduce的个数
2.2使用sort by查询语句进行排序
2.3将查询结果导入文件中
3.分区排序 distribute by
distribute by将数据进行分区,结合sort by使用对不同分区进行排序
在使用这个语法前要先设置分区的个数同2.1
先按照s_id进行分区,再按照s_score进行排序,最后将查询的结果加载到本地
结果:
在这个文件中记录的都是id为04的数据,可见distribute by的作用,第三栏是成绩,按照升序排列,可见sort by的作用。
4.cluster by
当distribute by的字段与sort by字段相同时可以使用cluster by,但是cluster by的排序只能是倒序,不能指定ASC或者DESC
以下两种写法等价