ハイブ内でのorderby、sort by、distribute by、clusterbyの違い

hive中order by ,sort by ,distribute by 和 cluster by的区别

いつも言う:

一般的に、これら4つはハイブでの並べ替えと集計の機能を持っていますが、実行時に開始するMRは異なります。

詳細に:

注文者:

Order byは、指定されたすべてのデータをグローバルに並べ替え、1つのレデューサーのみを「ウェイクアップ」して機能させます。どんなに多くのデータが来ても、それを処理するために開始されるレデューサーは1つだけです。したがって、データ量は問題ありませんが、データ量が増えると、注文は非常に面倒になり、「ストライキ」にさえなります。

並び替え:

並べ替えは部分的な並べ替えです。順序付けの怠惰や混乱と比較すると、並べ替えは逆で、非常に勤勉であるだけでなく、クローン機能も備えています。並べ替えでは、データ量に応じて1つ以上のレデューサーが機能するようになり、reduceに入る前に各レデューサーの並べ替えファイルが生成されます。これの利点は、グローバルソートの効率を向上させることです。

配布元:

配布方法の機能は次のとおりです。配布方法は、マップ結果の配布を制御し、同じフィールドを持つマップ出力を処理のためにリデュースノードに配布します。つまり、特定の状況下では、レデューサーに対して特定の行を制御する必要があります。この操作は通常、発生する可能性のある後続の集計操作に備えるためのものです。
最も一般的な例を挙げてください。

from records2
select year,temperature
distribute by year

上から続行:

sort by year asc,temperature desc

年と気温に基づいて気象データを並べ替える場合、同じ年のデータを同じレデューサーに配置して処理する必要があります。したがって、この結果もグローバルにソートする必要があります。特に、配布方法は通常、並べ替えと併用するため、出会いによる配布の場合は、配布元を先に配置する必要があります。処理するデータは、マップ側から配布する必要があるため、わかりにくいです。このように、最初に配布することにより、部分的な並べ替えが得意な並べ替えが自由に機能します。それ以外の場合、配布による配布がない場合、並べ替えはすべてのデータ、つまりグローバルな並べ替えを処理します。これは並べ替えの仕事ではなく、そうするとクラスターの効率が低下するだけです。

クラスター:

場合は、すべての列のsort bydistribute by同じですが、それが中に省略することができcluster by、同時に両方で使用する列を指定するために

from recrds2
select year , temperature
cluster by year;

おすすめ

転載: blog.csdn.net/qq_42578036/article/details/110139638