中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Hive中Order by, Sort by ,Dristribute by,Cluster By有什么用

發布時間:2021-12-08 10:52:16 來源:億速云 閱讀:138 作者:小新 欄目:云計算

這篇文章主要介紹了Hive中Order by, Sort by ,Dristribute by,Cluster By有什么用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

Hive 中 Order by, Sort by ,Dristribute by,Cluster By 的作用和用法

1. order by

set hive.mapred.mode=nonstrict; (default value / 默認值)

set hive.mapred.mode=strict;

 order by 和數據庫中的Order by 功能一致,按照某一項 & 幾項 排序輸出。

 與數據庫中 order by 的區別在于在hive.mapred.mode = strict 模式下 必須指定 limit 否則執行會報錯。

 hive> select * from test order by id;     

FAILED: Error in semantic analysis: 1:28 In strict mode, if ORDER BY is specified, LIMIT must also be specified. Error encountered near token 'id'

 原因: 在order by 狀態下所有數據會到一臺服務器進行reduce操作也即只有一個reduce,如果在數據量大的情況下會出現無法輸出結果的情況,如果進行 limit n ,那只有  n * map number 條記錄而已。只有一個reduce也可以處理過來。

2. sort by

sort by 不受 hive.mapred.mode 是否為strict ,nostrict 的影響

 sort by 的數據只能保證在同一reduce中的數據可以按指定字段排序。

 使用sort by 你可以指定執行的reduce 個數 (set mapred.reduce.tasks=<number>) 這樣可以輸出更多的數據。

對輸出的數據再執行歸并排序,即可以得到全部結果。

注意:可以用limit子句大大減少數據量。使用limit n后,傳輸到reduce端(單機)的數據記錄數就減少到n* (map個數)。否則由于數據過大可能出不了結果。

 http://www.alidata.org/archives/622


3. distribute by

 按照指定的字段對數據進行劃分到不同的輸出reduce  / 文件中。

 insert overwrite local directory '/home/hadoop/out' select * from test order by name distribute by length(name);  

 此方法會根據name的長度劃分到不同的reduce中,最終輸出到不同的文件中。 

 length 是內建函數,也可以指定其他的函數或這使用自定義函數。

4. DISTRIBUTE BY with SORT BY
DISTRIBUTE BY能夠控制map的輸出在reduce中如何劃分。其可以按照指定的字段對數據進行劃分到不同的輸出reduce/文件中。
DISTRIBUTE BY和GROUP BY有點類似,DISTRIBUTE BY控制reduce如何處理數據,而SORT BY控制reduce中的數據如何排序。
注意:hive要求DISTRIBUTE BY語句出現在SORT BY語句之前。 

5. Cluster By

 cluster by 除了具有 distribute by 的功能外還兼具 sort by 的功能。 

 默認倒序排序,但DISTRIBUTE BY的字段和SORT BY的字段必須相同,且不能指定排序規則。 asc  或者 desc。

總結:

ORDER BY是全局排序,但在數據量大的情況下,花費時間會很長
SORT BY是將reduce的單個輸出進行排序,不能保證全局有序
DISTRIBUTE BY可以按指定字段將數據劃分到不同的reduce中
當DISTRIBUTE BY的字段和SORT BY的字段相同時,可以用CLUSTER BY來代替 DISTRIBUTE BY with SORT BY。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Hive中Order by, Sort by ,Dristribute by,Cluster By有什么用”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

佛坪县| 筠连县| 邳州市| 子长县| 翼城县| 吉木乃县| 福泉市| 保山市| 微山县| 桐乡市| 彩票| 都兰县| 丹江口市| 手机| 南召县| 晋州市| 永新县| 清涧县| 竹溪县| 镇宁| 盱眙县| 榆中县| 仙桃市| 黔江区| 买车| 娱乐| 天镇县| 禹州市| 沙坪坝区| 保靖县| 同仁县| 延边| 乐至县| 乡城县| 利川市| 闸北区| 建德市| 白沙| 泸定县| 十堰市| 井陉县|