91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

hive中order by,sort by, distribute by, cluster by作用以及用法

發布時間:2020-06-29 11:07:01 來源:網絡 閱讀:1359 作者:jethai 欄目:大數據

1. order by

    Hive中的order by跟傳統的sql語言中的order by作用是一樣的,會對查詢的結果做一次全局排序,所以說,只有hive的sql中制定了order by所有的數據都會到同一個reducer進行處理(不管有多少map,也不管文件有多少的block只會啟動一個reducer)。但是對于大量數據這 將會消耗很長的時間去執行。

    這里跟傳統的sql還有一點區別:如果指定了hive.mapred.mode=strict(默認值是nonstrict),這時就必須指定limit 來限制輸出條數,原因是:所有的數據都會在同一個reducer端進行,數據量大的情況下可能不能出結果,那么在這樣的嚴格模式下,必須指定輸出的條數。

2. sort by

    Hive中指定了sort by,那么在每個reducer端都會做排序,也就是說保證了局部有序(每個reducer出來的數據是有序的,但是不能保證所有的數據是有序的,除非只有一個reducer),好處是:執行了局部排序之后可以為接下去的全局排序提高不少的效率(其實就是做一次歸并排序就可以做到全局排序了)。

3. distribute by和sort by一起使用

    ditribute by是控制map的輸出在reducer是如何劃分的,舉個例子,我們有一張表,mid是指這個store所屬的商戶,money是這個商戶的盈利,name是這個store的名字

store:

midmoneyname
AA15.0商店1
AA20.0商店2
BB22.0商店3
CC44.0商店4

    執行hive語句:

select mid, money, name from store distribute by mid sort by mid asc, money asc

我 們所有的mid相同的數據會被送到同一個reducer去處理,這就是因為指定了distribute by mid,這樣的話就可以統計出每個商戶中各個商店盈利的排序了(這個肯定是全局有序的,因為相同的商戶會放到同一個reducer去處理)。這里需要注意 的是distribute by必須要寫在sort by之前。

4. cluster by

    cluster by的功能就是distribute by和sort by相結合,如下2個語句是等價的:

    

select mid, money, name from store cluster by mid
select mid, money, name from store distribute by mid sort by mid


    如果需要獲得與3中語句一樣的效果:

select mid, money, name from store cluster by mid sort by money

    注意被cluster by指定的列只能是降序,不能指定asc和desc。


向AI問一下細節

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

AI

隆安县| 云浮市| 原平市| 威海市| 衡阳市| 友谊县| 榆社县| 仁布县| 进贤县| 罗城| 浦北县| 沈阳市| 越西县| 丹阳市| 丰原市| 当涂县| 来安县| 绥芬河市| 新泰市| 恩施市| 张家界市| 聊城市| 龙泉市| 灵寿县| 沙雅县| 南充市| 怀宁县| 申扎县| 嘉兴市| 西青区| 电白县| 铜川市| 乌兰察布市| 新龙县| 滦南县| 郑州市| 永顺县| 福海县| 上犹县| 田阳县| 项城市|