

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 提交 Pig 工作
<a name="emr-pig-launch"></a>

此部分演示如何向 Amazon EMR 集群提交 Pig 工作。后面的示例会生成一个报告，其中包含已传输的字节总数、前 50 个 IP 地址的列表、前 50 个外部引用站点的列表以及前 50 个使用 Bing 和 Google 的搜索词。Pig 脚本位于 Amazon S3 存储桶 `s3://elasticmapreduce/samples/pig-apache/do-reports2.pig` 中。输入数据位于 Amazon S3 存储桶 `s3://elasticmapreduce/samples/pig-apache/input` 中。输出保存到 Amazon S3 存储桶。

## 使用 Amazon EMR 控制台提交 Pig 工作
<a name="ConsoleCreatingaPigJob"></a>

此示例介绍如何使用 Amazon EMR 控制台向集群添加 Pig 步骤。

**提交 Pig 步骤**

1. [在 /emr 上打开亚马逊 EMR 控制台。https://console.aws.amazon.com](https://console.aws.amazon.com/emr/)

1. 选择**创建集群**以创建安装有 Pig 的集群。有关如何创建群集的步骤，请参阅[规划和配置 Amazon EMR 集群](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-gs.html#emr-getting-started-plan-and-configure)。

1. 按照[使用 SSH 连接主节点](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-connect-master-node-ssh.html)中概述的步骤，打开终端并 SSH 连接到集群的主节点。完成此操作后，请运行以下步骤。

   ```
   sudo mkdir -p /home/hadoop/lib/pig/
   sudo aws s3 cp s3://elasticmapreduce/libs/pig/0.3/piggybank-0.3-amzn.jar /home/hadoop/lib/pig/piggybank.jar
   ```

1. 在控制台中，点击 **Cluster List (集群列表)**，并选择您创建的集群。

1. 滚动到 **Steps (步骤)** 部分并展开它，然后选择 **Add step (添加步骤)**。

1. 在 **Add step (添加步骤)** 对话框中：
   + 对于 **Step type (步骤类型)**，选择 **Pig program (Pig 程序)**。
   + 对于 **Name (名称)**，接受默认名称 (Pig program) 或键入新名称。
   + 对于 **Script S3 location (脚本 S3 位置)**，键入 Pig 脚本的位置。例如：**s3://elasticmapreduce/samples/pig-apache/do-reports2.pig**。
   + 对于 **Input S3 location (输入 S3 位置)**，键入输入数据的位置。例如：**s3://elasticmapreduce/samples/pig-apache/input**。
   + 对于 **Output S3 location (输出 S3 位置)**，键入或浏览到您的 Amazon S3 输出存储桶的名称。
   + 对于 **Arguments (参数)**，将该字段保留为空白。
   + 对于 **Action on failure (出现故障时的操作)**，接受默认选项 **Continue (继续)**。

1. 选择**添加**。步骤会出现在控制台中，其状态为“Pending”。

1. 步骤的状态会随着步骤的运行从“Pending”变为“Running”，再变为“Completed”。要更新状态，请选择 **Actions (操作)** 列上方的 **Refresh (刷新)** 图标。步骤完成后，请检查 Amazon S3 存储桶以确认 Pig 步骤的输出文件存在。

## 使用提交 Pig 作品 AWS CLI
<a name="emr-pig-submit-work"></a>

**要提交 Pig 步骤，请使用 AWS CLI**

使用启动集群时 AWS CLI，使用`--applications`参数安装 Pig。要提交 Pig 步骤，请使用 `--steps` 参数。

1. 要启动安装了 Pig 的集群，请键入以下命令，将*myKey*和*amzn-s3-demo-bucket/*替换为您的 EC2 密钥对和 Amazon S3 存储桶的名称。

   ```
   aws emr create-cluster \
   --name "Test cluster" \
   --log-uri s3://amzn-s3-demo-bucket/ \
   --release-label emr-5.36.2 \
   --applications Name=Pig \
   --use-default-roles \
   --ec2-attributes KeyName=myKey \
   --instance-type m5.xlarge \
   --instance-count 3
   ```
**注意**  
为了便于读取，包含 Linux 行继续符（\$1）。它们可以通过 Linux 命令删除或使用。对于 Windows，请将它们删除或替换为脱字号 (^)。

   如果不使用 `--instance-groups` 参数指定实例计数，则将启动单个主节点，其余实例将作为核心节点启动。所有节点都使用该命令中指定的实例类型。
**注意**  
如果您之前未创建默认 EMR 服务角色和 EC2 实例配置文件，请先键入 `aws emr create-default-roles` 创建它们，然后再键入 `create-cluster` 子命令。

1. 要提交 Pig 步骤，请输入以下命令，将*myClusterId*和*amzn-s3-demo-bucket*替换为您的集群 ID 和 Amazon S3 存储桶的名称。

   ```
   aws emr add-steps \
   --cluster-id myClusterId \
   --steps Type=PIG,Name="Pig Program",ActionOnFailure=CONTINUE,Args=[-f,s3://elasticmapreduce/samples/pig-apache/do-reports2.pig,-p,INPUT=s3://elasticmapreduce/samples/pig-apache/input,-p,OUTPUT=s3://amzn-s3-demo-bucket/pig-apache/output]
   ```

   此命令将返回一个步骤 ID，您可以用它来检查您的步骤的 `State`。

1. 使用带有 `describe-step` 命令的步骤，查询步骤的状态。

   ```
   aws emr describe-step --cluster-id myClusterId --step-id s-1XXXXXXXXXXA
   ```

   随着步骤的运行，步骤的 `State` 从 `PENDING` 变为 `RUNNING` 再变为 `COMPLETED`。步骤完成后，请检查 Amazon S3 存储桶以确认 Pig 步骤的输出文件存在。

有关在中使用 Amazon EMR 命令的更多信息 AWS CLI，请参阅[AWS CLI 命令](https://docs.aws.amazon.com/cli/latest/reference/emr)参考。