ここまではHiveを使ってデータベースや内部テーブルについて扱ってきました。実際、これらのデータベースや内部テーブルはHDFSに構築され、データ自体もHDFSに置かれています。
一方、ここで扱う外部テーブルとは、ローカルファイルシステムあるいはAmazon S3上に置かれているデータファイルをまるで内部テーブルのように扱える仕組みです。データ自体がHDFSに置かれるわけではありません。外部テーブルを宣言したデータファイルからは、データを読み書きするときにHiveQLを使うことができます。
では、実際に外部テーブルを作成してみましょう。まず次のようにカンマ区切りのデータファイルを用意します。データファイルは複数存在しても構いません。今回は食べ物の名前と値段が書かれたデータファイルを考えてみました。
からあげ,400 ラーメン,800 サラダ,350 ギョウザ,300 天ぷらそば,600
アイス,100 カレー,550 麻婆豆腐,750
では、これらのデータファイルを使っていよいよ外部テーブルを作成してみます。以下はfoodsという外部テーブルを作成する例です。LOCATIONでパスを指定するのですが、ファイルではなくディレクトリを指定してください。
これだけで、通常のテーブルのように先ほどのデータを参照することができるようになりました。例えばこのように全件出力してみましょう。
全件出力されることが確認できました。さらに、HiveQLを実行しただけですが裏ではMap処理とReduce処理に変換されてHadoopジョブが実行されていることも確認できます。
この状態でdata2.txtの内容にたい焼きの行を追加してみます。このたい焼きのデータはHive側から読み出すことが出来るでしょうか。
アイス,100 カレー,550 麻婆豆腐,750 たい焼き,120 # 追加
この状態でHiveQLを実行するとたい焼きの結果も問題なく出力されます。このことからもわかるように、外部テーブルの仕組みは単純にLOCATIONで指定したディレクトリのデータの取り扱いをSQL形式で行えるようにするというだけです。
外部テーブルへの書き込みも簡単に行えます。まず、書き込みを行うためのhigh_price_foodsという外部テーブルを作成します。
次に、foodsテーブルの金額が500円を超えるデータのみをhigh_price_foodsテーブルに書き込んでみます。
実際にhigh_price_foodsテーブルを見ると、金額が500円を超えるデータが記録されていることが確認できます。
佐々木達也著
秀和システム 2400円(税別)
「ビッグデータ(=従来のコンピュータシステムでは、しまったり、探し出したり、調査したり、人間にわかりやすく加工したりが難しい、とても大きなデータ)なんて自分には関係ない」そう思っているエンジニアに贈る「Hadoop」の体験型入門書です。数億のユーザを抱えるSNSの利用データのように「雲をつかむような話」ではなく、Webサイトエンジニアや普通のプログラマが親しみを感じられるような普通のデータと、Amazon EMRという手軽な実験環境を使い、実際にHadoopを動かしてみます。手軽に短い時間で分散処理のメリットを体験することで、手元の業務に眠っているかもしれないビッグデータの活用に可能性を見出せるかも知れません。
Copyright © ITmedia, Inc. All Rights Reserved.