Pig on Hadoop

Pigってのは,googleで言うところのsawzallに対応するようです.が,ちょっと見たところでは,Sawzallどころではなくて,もっと意欲的です.Sawzallは,MapReduce処理モデルに思い切り引っ張られているけど,Pigは,リレーショナル演算をHadoop::MapReduce上の処理に変換しようという割と壮大な試み.Hadoopは利用しているけども,完全に別プロジェクトでやっています.yahooで作られていたものをオープンソースにしましたということですね.

たとえば,下のように書くことができるような言語になっています.

VISITS = load '/visits' as (user, url, time);
USER_VISITS = group VISITS by user;
USER_COUNTS = foreach USER_VISITS generate group as user, COUNT(VISITS) as numvisits;
ALL_COUNTS = group USER_COUNTS all;
AVG_COUNT = foreach ALL_COUNTS generate AVG(USER_COUNTS.numvisits);

dump AVG_COUNT;

ほとんど説明要らないですねぇ.これはこれで面白そう.いくらでも最適化の余地があるだろうし.これを知ったのは,Hadoopのjiraでhbaseとの位置づけが議論されていたからなんだけど,hbaseとは全く違いますね.Hbaseは,カラムデータベース.Pigは,load...にあるように,基本的には,ロウベース.かつ,多分,原則的にはテキストファイル.Hbaseは,HDFSを利用しているだけ.Pigは,根本的にMapReduceを必要とする.