検索
連載

SQLライクにMapReduce処理ができる「Hive」の使い方きょうから試せる Hadoop“スモールスタート”ガイド(終)(1/3 ページ)

実際にHadoopで処理を実装していきながら「Hadoopは、誰にだって扱える」を体感しましょう。今回は、Hadoop Streamingとは別のHadoopの利用方法となる「Hiveの使い方」を解説します。

Share
Tweet
LINE
Hatena

連載目次

Hadoopファーストガイド

書籍の中から有用な技術情報をピックアップして紹介する本シリーズ。今回は、秀和システム発行の書籍『Hadoopファーストガイド(2012年9月20日発行)』からの抜粋です。

ご注意:本稿は、著者及び出版社の許可を得て、そのまま転載したものです。このため用字用語の統一ルールなどは@ITのそれとは一致しません。あらかじめご了承ください。


SQLライクにMapReduce処理できるHive

 Hadoopを利用する方法はHadoop Streamingだけではありません。本章で扱うApache Hive(以下、Hive)もそのひとつです。Hiveを利用すればMapperやReducerに処理を分割する必要はなく、リレーショナルデータベースを扱うような感覚でHiveQLを使ってHadoop処理を実行することができます。

Hiveとは?

 Hiveとは、Hadoopのラッパーであり、リレーショナルデータベースを扱うような感覚でHadoopジョブを実行することができる仕組みです。SQLのようなDSL言語(HiveQL)を利用するのですが、HiveQLを使って処理を書けば内部的にMap処理とReduce処理に変換されて実行されます。

 Hiveはフェイスブックで開発され、2008年12月に正式にHadoopプロジェクトに寄贈されました。フェイスブックでは95%のHadoopジョブをHiveを使って実行しているそうです※1。普段から利用しているSQLのような感覚でHadoopを実行することができるので心理的な障壁が小さいかもしれません。

 ※1 Hadoop Summit 2010


図5-1 Hive(http://hive.apache.org)
Hive(http://hive.apache.org)

 HiveQLは一般的な集約関数や各種演算子もサポートしていますし、Ruby、Perl、PHP、Python、Javaといったさまざまな言語で記述したMapper、Reducerを利用することも可能で、これを利用すればSQLでは難しいような処理でも対応可能です。

Hiveのインストール

 ではEMR(Amazon Elastic MapReduce)でHiveを利用できる環境をまずは構築しましょう。これはEMR起動時に「--hive-interactive」オプションを付けるだけです。

 Hiveのバージョンが表示されればHiveが利用できる状態となっています。執筆時点では0.8.1.2が動作していることが確認できました。

 なお、Hiveが使える状態で起動したEMRクラスタはHiveを利用可能にするステップが自動で設定されるため、「--list」オプションでジョブフローを照会すると「Setup Hive」というステップを確認できます。

Hiveの基本動作

 実際にHiveを実行するためには、Hiveのインタラクティブシェルに入ります※2

 ※2 掛かった時間など表示しなくていい場合にはhive -Sでシェルに入ると良いです


hiveコマンドのオプション
オプション 説明
-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というデータベースを新たに作成してみましょう。

mydbを作成

 すると、先ほどのdefaultデータベースに加えて、mydbデータベースも存在していることがわかります。

データベースを確認

 別のデータベースを利用したいときには次のようにUSEを使います。

       | 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る