Hiveをある程度理解している学生は、Hiveで一般的に使用されるいくつかのステートメントの内部操作メカニズムをある程度理解する必要があります。このようにして、Hiveをより最適化し、SQLに特定の調整を加えることができます。
以下は主に通過
明確な
参加する
2種類の操作、Hiveの基盤となるMapReduce実行プロセスの詳細な紹介。
DISTINCTフローチャート:
上記の最初の段階はマッピングであり、データをいくつかのフラグメントに分割して読み込む
第二段階はシャッフルです
バッファからディスクに書き込むとき、パーティションはパーティション化およびソートされます。パーティションは、特定のキーが入力するパーティションを参照し、同じパーティション内のキーがソートされます
私たちはDISTINCTなので、同じキーリストの1つを選択するだけで済みます。
JOINフローチャート
(JOIN / LEFT JOIN / RIGHT JOIN)はこのカテゴリに属します
MAP JOINはこのカテゴリに属していません
マッピングステージは、主にデータの読み取り、データの分割、およびマーキングのためのものです。
たとえば
ソースAからのデータは
a:[a、3、4、A]
b:[b、2,3、A]
c:[c、5,6、A]
ソースBからのデータは
d:[d、20、B]
a:[a、2、B]
b:[b、9、B]
シャッフルステージでは、データを並べ替え、同じキーを持つデータをまとめます
還元段階では、同じ鍵が組み立てられ、
たとえばキー:a
Aのリストで構成
a:{[a、3,4]}
Bのリストで構成
a {[a、2]}
異なるソースからの同じソースを持つキーは1つしかないため、1対1の関係です。
多対多の関係の場合、サイクルが形成され、最終的にデカルト積が発生します。
同様に、LEFT JOINとRIGHT JOINのプロセスは類似しています。審査条件のみ異なります。