Amazon Elastic MapReduceのPig

割と有名な話かもしれないが、自分は最近まで知らなかった。

Amazon EMRにPigを設置する定義

        {
            "Name": "Setup Pig",
            "ActionOnFailure": "TERMINATE_JOB_FLOW",             
            "HadoopJarStep": {
              "Jar": "s3://us-east-1.elasticmapreduce/libs/script-runner/script-runner.jar",
              "Args": [
                "s3://us-east-1.elasticmapreduce/libs/pig/pig-script",
                "--base-path",
                "s3://us-east-1.elasticmapreduce/libs/pig/",
                "--install-pig"
              ],
            }
          }

MapReduceジョブでデータのお掃除などをしておいてから、上記ジョブを流せばPigの設置が完了する。elastic-mapreduceコマンドに--pig-scriptオプションを渡す方式と異なり、Streamingなどとの混在が可能になる。

Amazon EMRにおけるPigは複数種類の入力を受け取れる

        {
            "Name": "Run Pig Script",
            "HadoopJarStep": {
              "Jar": "s3://us-east-1.elasticmapreduce/libs/script-runner/script-runner.jar",
              "Args": [
                "s3://us-east-1.elasticmapreduce/libs/pig/pig-script",
                "--base-path",
                "s3://us-east-1.elasticmapreduce/libs/pig/",
                "--run-pig-script",
                "--args",
                "-f",
                "s3://bucket/script.pig",
                "-p",
                "INPUT_MASTER=hdfs:///master/",
                "-p",
                "INPUT_TRANSACTION=s3://bucket/input/transaction/yyyymmdd/",
                "-p",
                "OUTPUT=s3://bucket/output/yyyymmdd/"
              ],
            }
          }

hdfsないしはs3を指定できる。