2010年12月17日、Hadoop上のデータを効率良く扱えるスクリプト言語「Pig」のバージョン0.8がリリースされました。Apache PigはHadoopと同じく米Yahoo!が中心となって開発しており、最初はHadoopのサブプロジェクトでしたが2010年9月にApacheトッププロジェクトに昇格しました。同様のアプローチを行うプロダクトとしてFacebookが開発しているHiveがあります。
今回のリリースでいろいろな機能が追加されました。まずPigにカスタムの関数追加が行えるUDFというユーザ定義関数の機能が、今回のバージョンからJavaでなくPythonで記述することが可能になりました。内部でJythonエンジンを呼び出しており、今までJavaで長いコードを書いてJAR(Java Archive)を作らなければならなかったのに対し、非常に記述量が減り気軽にUDFを作成できるようになりました。もちろんJRubyやGroovyなどJVMで動作するほかの言語もサポートさせることができますが、そのためのインタフェースは別途用意しないといけません。
次に挙げる新機能としてPigUnitがあります。名前から想像できるとおり、Pigスクリプトのユニットテストを実現するものです。通常のJUnitのユニットテストクラスを作成し、テストしたいPigスクリプトと入力を与え、assertOutputメソッドにて期待する出力が得られるかをテストします。テスト実行はローカル環境ではもちろん、Hadoopを使ったクラスタ環境でも可能です(リスト1)。
リスト1 PigUnitテストケース例
@Test
public void testTop2Queries() {
String[] args = {
"n=2",
};
PigTest test = new PigTest("top_queries.pig", args);
String[] input = {
"yahoo",
"yahoo",
"yahoo",
"twitter",
"facebook",
"facebook",
"linkedin",
};
String[] output = {
"(yahoo,3)",
"(facebook,2)",
};
test.assertOutput("data", input, "queries_limit", output);
}
ほかにもHBaseストレージにアクセスできるインタフェースの追加や、カスタムのパーティショナを指定できるようになるなどの改善が行われています。米Yahoo!ではHadoopアプリケーションの約6割はPigスクリプトで書かれているそうです。Hadoopを使ったデータ解析を容易にしてくれるツールですので、使ったことのない人はぜひ試してみてください。
URL:http://pig.apache.org/