标签:
Hive中常见的高级查询包括:group by、Order by、join、distribute by、sort by、cluster by、Union all。今天我们来看看order by操作,Order by表示按照某些字段排序,语法如下:
注意:
(1):order by后面可以有多列进行排序,默认按字典排序。
(2):order by为全局排序。
(3):order by需要reduce操作,且只有一个reduce,无法配置(因为多个reduce无法完成全局排序)。
order by操作会受到如下属性的制约:
注:如果在strict模式下使用order by语句,那么必须要在语句中加上limit关键字,因为执行order by的时候只能启动单个reduce,如果排序的结果集过大,那么执行时间会非常漫长。
下面我们通过一个示例来深入体会order by的用法:
数据库有一个employees表,数据如下:
现在我要按第二列(salary)降序排列:
此时的hive.mapred.mode属性为:
现在我们将它改为strict,然后再使用order by进行查询:
注:在strict模式下查询必须加上limit关键字。
注:另外还有一个要注意的是strict模式也会限制分区表的查询,解决方案是必须指定分区
先来看看分区:
在strict模式先使用order by查询:
标签:
原文地址:http://www.cnblogs.com/thinkpad/p/5173665.html