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

» 2017年03月28日 05時00分 公開
前のページへ 1|2|3       

外部テーブルから読み込み

 ここまではHiveを使ってデータベースや内部テーブルについて扱ってきました。実際、これらのデータベースや内部テーブルはHDFSに構築され、データ自体もHDFSに置かれています。

 一方、ここで扱う外部テーブルとは、ローカルファイルシステムあるいはAmazon S3上に置かれているデータファイルをまるで内部テーブルのように扱える仕組みです。データ自体がHDFSに置かれるわけではありません。外部テーブルを宣言したデータファイルからは、データを読み書きするときにHiveQLを使うことができます。

 では、実際に外部テーブルを作成してみましょう。まず次のようにカンマ区切りのデータファイルを用意します。データファイルは複数存在しても構いません。今回は食べ物の名前と値段が書かれたデータファイルを考えてみました。

s3n://sasata299/hive/input/foods/data1.txt
からあげ,400
ラーメン,800
サラダ,350
ギョウザ,300
天ぷらそば,600
s3n://sasata299/hive/input/foods/data2.txt
アイス,100
カレー,550
麻婆豆腐,750

 では、これらのデータファイルを使っていよいよ外部テーブルを作成してみます。以下はfoodsという外部テーブルを作成する例です。LOCATIONでパスを指定するのですが、ファイルではなくディレクトリを指定してください。

foodsという外部テーブルを作成する例

 これだけで、通常のテーブルのように先ほどのデータを参照することができるようになりました。例えばこのように全件出力してみましょう。

全件出力されることを確認

 全件出力されることが確認できました。さらに、HiveQLを実行しただけですが裏ではMap処理とReduce処理に変換されてHadoopジョブが実行されていることも確認できます。

 この状態でdata2.txtの内容にたい焼きの行を追加してみます。このたい焼きのデータはHive側から読み出すことが出来るでしょうか。

s3n://sasata299/hive/input/foods/data2.txt
アイス,100
カレー,550
麻婆豆腐,750
たい焼き,120 # 追加

 この状態でHiveQLを実行するとたい焼きの結果も問題なく出力されます。このことからもわかるように、外部テーブルの仕組みは単純にLOCATIONで指定したディレクトリのデータの取り扱いをSQL形式で行えるようにするというだけです。

外部テーブルへの書き込み

 外部テーブルへの書き込みも簡単に行えます。まず、書き込みを行うためのhigh_price_foodsという外部テーブルを作成します。

外部テーブルを作成

 次に、foodsテーブルの金額が500円を超えるデータのみをhigh_price_foodsテーブルに書き込んでみます。

foodsテーブルの金額が500円を超えるデータのみをhigh_price_foodsテーブルに書き込み

 実際にhigh_price_foodsテーブルを見ると、金額が500円を超えるデータが記録されていることが確認できます。

データが記録されていることを確認

Hadoopファーストガイド

Hadoopファーストガイド

佐々木達也著
秀和システム 2400円(税別)
「ビッグデータ(=従来のコンピュータシステムでは、しまったり、探し出したり、調査したり、人間にわかりやすく加工したりが難しい、とても大きなデータ)なんて自分には関係ない」そう思っているエンジニアに贈る「Hadoop」の体験型入門書です。数億のユーザを抱えるSNSの利用データのように「雲をつかむような話」ではなく、Webサイトエンジニアや普通のプログラマが親しみを感じられるような普通のデータと、Amazon EMRという手軽な実験環境を使い、実際にHadoopを動かしてみます。手軽に短い時間で分散処理のメリットを体験することで、手元の業務に眠っているかもしれないビッグデータの活用に可能性を見出せるかも知れません。

注文ページへ


前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。