Hiveのorder by、sort by、distribute byとcluster by

1449 ワード

hive中order by、sort by、distribute by、cluster by作用及び用法
hive中order by、sort by、distribute by、cluster by作用及び用法
1.order by
Hiveのorder byは伝統的なsql言語のorder byと同じ役割をしています。検索の結果をグローバルに並べ替えます。だから、hiveのsqlだけorder byを制定したデータは同じreducerに処理されます。しかし、大量のデータに対しては、これは長い時間をかけて実行されます。
ここでは従来のsqlとはもう一つの違いがあります。hive.mapred.mode=strictを指定したら、limitを指定して出力バー数を制限しなければなりません。すべてのデータは同じreducerで行われ、データ量が大きい場合、結果が出せないかもしれません。このような厳しいモードでは、出力バーを指定しなければなりません。
2.sort by
Hiveでsort byを指定しましたが、reducerの各端に並べ替えが行われます。つまり、局所秩序が保証されます。(つまり、一度並べ替えをすれば、全体を並べ替えることができます。)
3.distribute byとsort byを一緒に使う
ditribute byはmapの出力をコントロールしています。reducerはどのように分けられていますか?例を挙げると、私たちはこのstoreに所属する商店を指しています。moneyはこの商店の収益です。nameはこのstoreの名前です。
mid
money
name
AA
15.0
店1
AA
20.0.
店2
BB
22.0
店3
CC
44.0
店4
hive文を実行する:
select mid, money, name from store distribute by mid sort by mid asc, money asc  
私たちはすべてのmidの同じデータを同じreducerに送って処理します。これはdistribute by midを指定したからです。これで各商店の中の各商店の収益の順位を統計できます。ここで注意したいのは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は指定できません。