実際にHadoopで処理を実装していきながら「Hadoopは、誰にだって扱える」を体感しましょう。今回は、Hadoop Streamingとは別のHadoopの利用方法となる「Hiveの使い方」を解説します。
書籍の中から有用な技術情報をピックアップして紹介する本シリーズ。今回は、秀和システム発行の書籍『Hadoopファーストガイド(2012年9月20日発行)』からの抜粋です。
ご注意:本稿は、著者及び出版社の許可を得て、そのまま転載したものです。このため用字用語の統一ルールなどは@ITのそれとは一致しません。あらかじめご了承ください。
Hadoopを利用する方法はHadoop Streamingだけではありません。本章で扱うApache Hive(以下、Hive)もそのひとつです。Hiveを利用すればMapperやReducerに処理を分割する必要はなく、リレーショナルデータベースを扱うような感覚でHiveQLを使ってHadoop処理を実行することができます。
Hiveとは、Hadoopのラッパーであり、リレーショナルデータベースを扱うような感覚でHadoopジョブを実行することができる仕組みです。SQLのようなDSL言語(HiveQL)を利用するのですが、HiveQLを使って処理を書けば内部的にMap処理とReduce処理に変換されて実行されます。
Hiveはフェイスブックで開発され、2008年12月に正式にHadoopプロジェクトに寄贈されました。フェイスブックでは95%のHadoopジョブをHiveを使って実行しているそうです※1。普段から利用しているSQLのような感覚でHadoopを実行することができるので心理的な障壁が小さいかもしれません。
HiveQLは一般的な集約関数や各種演算子もサポートしていますし、Ruby、Perl、PHP、Python、Javaといったさまざまな言語で記述したMapper、Reducerを利用することも可能で、これを利用すればSQLでは難しいような処理でも対応可能です。
ではEMR(Amazon Elastic MapReduce)でHiveを利用できる環境をまずは構築しましょう。これはEMR起動時に「--hive-interactive」オプションを付けるだけです。
Hiveのバージョンが表示されればHiveが利用できる状態となっています。執筆時点では0.8.1.2が動作していることが確認できました。
なお、Hiveが使える状態で起動したEMRクラスタはHiveを利用可能にするステップが自動で設定されるため、「--list」オプションでジョブフローを照会すると「Setup Hive」というステップを確認できます。
実際にHiveを実行するためには、Hiveのインタラクティブシェルに入ります※2。
※2 掛かった時間など表示しなくていい場合にはhive -Sでシェルに入ると良いです
オプション | 説明 | 例 | |
---|---|---|---|
-e COMMAND | コマンドを実行する | ||
-f FILE | 指定したスクリプトを実行する | myscript.q | |
-d KEY=VALUE | スクリプトに変数を渡す | OUTPUT=s3n://path/to/output_dir | |
-S | 実行時のメッセージ(かかった時間など)を表示しない | ||
-v | SQL実行時の詳細なメッセージを表示する | ||
-version | Hiveのバージョンを表示する | ||
-h | ヘルプを表示する | ||
SHOW FUNCTIONSで利用可能な関数の一覧を見ることができます。また、以下のように指定すればsubから始まる関数だけを表示することも可能です。
関数の説明を見ることもできます。いろいろな関数があるので調べてみてください。
通常、インタラクティブシェルにログインした場合のHiveデータベースはdefaultデータベースが利用されます。データベースはこのように確認できます。
mydbというデータベースを新たに作成してみましょう。
すると、先ほどのdefaultデータベースに加えて、mydbデータベースも存在していることがわかります。
別のデータベースを利用したいときには次のようにUSEを使います。
Copyright © ITmedia, Inc. All Rights Reserved.