天天看点

Hive学习之SELECT语句(二)

ORDER BY从句

      Hive中的order by从句与SQL中的order by很相似,都支持ASC和DESC,语法格式如下:

ORDER BY colName[ASC|DESC]
           

      但Hive中的order by有一些限制。在严格模式下(hive.mapred.mode=strict),order by从句后面必须跟着limit从句,如果hive.mapred.mode= nonstrict(默认值),则limit从句不是必须的。原因是为了使所有结果有序,必须有一个reducer对最终输出进行排序,如果输出的行数太多,单个reducer可能需要太多时间完成。

SORT BY从句

      SORT BY与ORDER BY的语法格式相似,如下:

SORT BY colName [ASC|DESC]
           

      Hive使用SORT BY在传输行到reducer之前对行排序。排序次序依赖于列的类型,如果列是数值型的,排序按照数值顺序,如果列是字符类型,排序按照字典顺序。

      SORT BY与ORDER BY的不同是,前者保证输出中的总体顺序,后者保证某个reducer中行的顺序。如果存在多个reducer,SORT BY可能产生部分有序的最终结果。

      在转换后,变量类型通常被做为字符串,也就意味着数值数据将会按照字典顺序排序。为了克服这一问题,带有casts的第二个select语句可以在SORT B