Pigによるデータ処理

 これからいよいよ、Pigを用いたデータ処理を“体感”していきます。Amazonのデータアーカイブを公開しているサイト(http://liu.cs.uic.edu/download/data/)には、いくつかのファイルがあります。今回は「reviewsNew.rar」(約1.7Gバイト)を任意のディレクトリにダウンロードし、解凍しましょう。

 このファイルを含め、すべてのファイルのデータは英文です。データの各項目はタブ区切りになっています。各項目の詳細はこのディレクトリにある「README.txt」に書かれていて、後ほどこのファイルを参考にスキーマを定義します。

 「解凍したデータファイルをHDFSにコピーし、Pigを起動し、データをロードする」という手順で進めていきます。まず図1のようにコマンドを実行します。カレントディレクトリに解凍したreviewsNew.txtが、Hadoopのファイルシステム「HDFS」上に作成した「amazon」ディレクトリにコピーされます。

図1●Hadoopのファイルシステム「HDFS」にサンプルデータを読み込む
図1●Hadoopのファイルシステム「HDFS」にサンプルデータを読み込む
[画像のクリックで拡大表示]

 続いてPigを起動します。コマンドラインで「pig」と入力しリターンキーを押します。図2のようなメッセージが表示され、最後に「grunt>」というコマンドプロンプトが現れたら、Pigで処理を実行できるようになります。

図2●Pigを起動する
図2●Pigを起動する
[画像のクリックで拡大表示]

 図2の(1)は、Pigのログが「/home/nikkei」ディレクトリの「pig_1296199360811.log」というファイルに保存されることを示しています。また(2)を見ると、PigがHadoopのファイルシステム「HDFS」に接続したことが分かります。そして(3)は、MapReduceクラスタのマスタノードである「JobTracker」に接続できたことを知らせています。

サンプルデータを読み込む

 早速Pigを使ってみましょう。まずはPigのコマンドプロンプト「grunt>」で、次のようなコマンドを実行します。

grunt> A = LOAD ’amazon/reviewsNew.txt’;

表1●Pigで利用できるリレーショナルオペレータ
表1●Pigで利用できるリレーショナルオペレータ
[画像のクリックで拡大表示]
表2●reviewsNew.txtに対して定義するスキーマ
表2●reviewsNew.txtに対して定義するスキーマ
[画像のクリックで拡大表示]
図3●サンプルデータを読み込みスキーマを定義するコマンドの例
図3●サンプルデータを読み込みスキーマを定義するコマンドの例
[画像のクリックで拡大表示]

 このコマンドでは、HDFSの「amazon」ディレクトリ内にある「reviewsNew.txt」を、「LOAD」という操作(オペレータ)により、リレーションに読み込んでいます。さらに、このリレーションには「A」というエイリアスを設定しています。このリレーションAは、オペレータの引数として扱えます。

 このようにPigを使う場合は、リレーションを通じてデータを処理していきます。リレーションに対して行えるオペレータについては表1にまとめてありますので見ておいてください。

 また、Pigでデータを読み込む際には「スキーマ」を定義することも可能です。スキーマとは、リレーション中のフィールドに名前と型を与えるものです。ここで定義したスキーマを表2に示します。原稿の執筆時点ではPigに日付関数が無いため、ここではフィールドdateを文字列として扱います。

 先ほどのサンプルデータを読み込む際にスキーマを定義するときのコマンドは図3の通りです。以降はこちらのリレーションAを利用します。