濃縮還元オレンジニュース

Apache Pig 0.8 リリース

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を使ったデータ解析を容易にしてくれるツールですので、使ったことのない人はぜひ試してみてください。

URLhttp://pig.apache.org/

おすすめ記事

記事・ニュース一覧