Hadoop クラスターにかなり大きな Hive テーブル (〜 200 億レコード) があり、いくつかの結合を行う必要があります。
このテーブルをキーでインデックス付けすることは可能ですか? たとえば、テーブル名がtable1で、 table1とtable2、table3、およびtable 4 を列キーで複数結合したい場合、これを行う最も効率的な方法は何でしょうか?
関連するテーブル 2 ~ 4 が比較的小さい場合 (それぞれ約 1 億)
IMHO Index は、この場合、table1 の選択性が非常に高い場合にのみ役立ちます。table1 の重大な部分 (1 ~ 5% を超えると推測します) が結合の結果になる場合、インデックスは効果的ではありません。その理由は、どのような場合でもすべてのページ/ブロックを読み取るためです。
Hive は、1 つのテーブルが小さいと判断し、シャッフルせずに結合を実行する各マッパーでメモリ ハッシュ テーブルとして使用できます。https://issues.apache.org/jira/browse/HIVE-195
また、mapjoin の場合にテーブルがパーティション化されているという事実から改善を得ることができます:
https://issues.apache.org/jira/browse /HIVE-917
Hive がパーティショニング情報を使用して共通結合を実行できるかどうかわかりません。