S-JIS[2011-08-08/2012-04-29] 変更履歴

Apache Hive

Apache Hive(ハイヴ)は、Hadoop(HDFS)上のファイルをSQLに似た命令で操作(MapReduceを実行)できるツール。


大前提

HiveはRDBMSのSQLに似た構文(HiveQLという名称)でデータ操作を記述できる。OracleのSQL*Plusのような対話型ツール。
HDFS上のファイルをテーブルに見立て、SQLでテーブルを扱う感覚で、HiveQLでファイルを扱う。

重要なのは、RDBMSとは異なり、操作対象はあくまでHDFS上のファイルであること。
HDFSのファイルは、基本的に更新は出来ない。何かデータを変更するときは、全件読み込んで加工して新しいファイルを作るのが基本的な考え方。
Hiveの操作対象はHDFSなので、考え方は同じ。したがって、Hiveには「INSERT INTO(データ追加)」や「UPDATE(更新)」「DELETE(削除)」は基本的には存在しない。

また、HiveはSQL風の命令(SELECT文)をHadoopのMapReduceに置き換えて実行する。
したがって、処理には相応の時間がかかる。

CREATE文やSELECT文はSQLにそっくりであり、まずCREATE文の独自文法だけ覚えれば、基本的なSELECT文はSQLの知識がほぼそのまま使える(結合(join)も出来る)。つまり使用できるようになるまでの敷居が低い。
しかし一方であまり複雑な副問合せには対応していないので、大規模なクエリーを実行するのには向かない。

一時的なデータ調査を行う(使い捨てSQLを実行する)のには非常に向いていると思う。


Hiveでのデータ処理の流れ

Hiveを試すのは以下の様な順序になるだろう。[2011-08-12]

  1. CREATE TABLEによるテーブル作成
  2. LOAD DATAによるテーブルへのデータ挿入
  3. SELECTによるデータ内容の照会
  4. INSERTによるテーブル(ファイル)へのデータ出力

技術メモへ戻る
メールの送信先:ひしだま