

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

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

本章節示範將 Pig 工作提交到 Amazon EMR 叢集。接下來的範例會產生包含總位元組傳輸的報告 (前 50 個 IP 地址清單、前 50 個外部推薦網站清單、以及使用 Bing 和 Google 的前 50 個搜尋詞彙)。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. 在 https：//[https://console.aws.amazon.com/emr](https://console.aws.amazon.com/emr/) 開啟 Amazon 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. 在主控台中，點按**叢集清單**，然後選取您建立的叢集的名稱。

1. 向下捲動至 **Steps (步驟)** 區段並展開，接著選擇 **Add step (新增步驟)**。

1. 在 **Add Step (新增步驟)** 對話中：
   + 針對 **Step type (步驟類型)**，選擇 **Pig program (Pig 程式)**。
   + 針對 **Name (名稱)**，接受預設名稱 (Pig 程式) 或輸入新名稱。
   + 針對 **Script S3 location (指令碼 S3 位置)**，輸入 Pig 指令碼的位置。例如：**s3://elasticmapreduce/samples/pig-apache/do-reports2.pig**。
   + 針對 **Input S3 location (輸入 S3 位置)**，輸入輸入資料的位置。例如：**s3://elasticmapreduce/samples/pig-apache/input**。
   + 針對**輸出 S3 位置**，輸入或瀏覽至 Amazon S3 輸出儲存貯體的名稱。
   + 針對 **Arguments (引數)**，將欄位保留空白。
   + 針對 **Action on failure (失敗的動作)**，接受預設選項 (**Continue (繼續)**)。

1. 選擇**新增**。該步驟會出現在主控台中，且狀態為待定。

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。若要使用 `--steps` 參數來提交 Pig 步驟。

1. 若要啟動已安裝 Pig 的叢集，請輸入下列命令，以 EC2 金鑰對和 Amazon S3 儲存貯體的名稱取代 *myKey* 和 amzn-s3-demo-bucket/。 **

   ```
   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)。