Hiveを高速化する方法

Hiveの高速化と負荷について

HiveはMysqlなど動作原理が違うため、高速化するためにはHive特有の書き方を覚える必要があります。

Hiveはクエリを実行すると、mapperとreducerと呼ばれるものが交互に動き、それらをどのように扱うかがキーとなります。

クエリの書き方によって、mapperとreducerの動く回数が変わり、抽出速度やDBへの負荷を調整することができます。

基本的には、

mapperとreduverが動く回数が少ない  → 高負荷だが、抽出が早い

mapperとreduverが動く回数が多い  → 低負荷だが、抽出が遅い

と考えて大丈夫でしょう。

Explainコマンドでそれらの回数を調べることができるため、さまざまなクエリをExplainで確認してから、適切なクエリを選ぶと良いと思います。

Hive Tips

Hue上ではなく、.sqlファイルを hive -f xxx.sqlのように動かす場合には、sqlファイルの先頭に以下の記述をしておくと抽出が早くなる場合があります。

書くデメリットはないので、とりあえず書いておくと良いでしょう。

set hive.vectorized.execution.enabled=true;
set hive.vectorized.execution.reduce.enabled=true;
set hive.auto.conver.join=true;

意味は次回また解説しようと思います。