天天看點

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

繼續閱讀