

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

# 提交串流步驟
<a name="CLI_CreateStreaming"></a>

本章節涵蓋將串流步驟提交到叢集的基本知識。串流應用程式會從標準輸入讀取輸入，然後針對每個輸入執行指令碼或可執行檔 (稱為映射器)。每個輸入的結果通常會儲存在本機 (通常在 Hadoop 分散式檔案系統 (HDFS) 分割區)。在映射器處理完所有輸入後，第二個指令碼或可執行檔 (稱為縮減器) 會處理映射器結果。縮減器的結果會傳送到標準輸出。您可以將一系列串流步驟串在一起，其中一個步驟的輸出會成為另一個步驟的輸入。

可以參考映射器和縮減器做為檔案，或您可以提供 Java 類別。您可以任何支援的語言 (包括 Ruby、Perl、Python、PHP 或 Bash) 實作映射器和縮減器。

## 使用主控台提交串流步驟
<a name="emr-dev-create-stream-console"></a>

此範例描述了如何使用 Amazon EMR 主控台來將串流步驟提交至執行中的叢集。

**若要提交串流步驟**

1. 在 https：//[https://console.aws.amazon.com/emr](https://console.aws.amazon.com/emr/) 開啟 Amazon EMR 主控台。

1. 在 **Cluster List (叢集清單)** 中，選擇您的叢集名稱。

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

1. 在 **Add Step (新增步驟)** 對話方塊中：
   + 對於 **Step type (步驟類型)**，選擇 **Streaming program (串流程式)**。
   + 對於 **Name (名稱)**，接受預設名稱 (串流程式) 或輸入新名稱。
   + 對於 **Mapper (映射器)**，輸入或瀏覽到 Hadoop 中的映射器類別位置，或映射器可執行檔 (例如 Python 程式) 所在的 S3 儲存貯體。路徑值的格式必須為 *BucketName*/*path*/*MapperExecutable*。
   + 對於**Reducer (縮減器)**，輸入或瀏覽到 Hadoop 中的縮減器類別位置，或縮減器可執行檔 (例如 Python 程式) 所在的 S3 儲存貯體。路徑值的格式必須為 *BucketName*/*path*/*MapperExecutable*。Amazon EMR 支援特殊*彙總*關鍵字。如需更多資訊，請參閱 Hadoop 提供的彙總程式庫。
   + 對於 **Input S3 location (輸入 S3 位置)**，輸入或瀏覽到輸入資料的位置。
   + 針對**輸出 S3 位置**，輸入或瀏覽至 Amazon S3 輸出儲存貯體的名稱。
   + 針對 **Arguments (引數)**，將欄位保留空白。
   + 針對 **Action on failure (失敗的動作)**，接受預設選項 (**Continue (繼續)**)。

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

1. 隨著步驟的執行，步驟的狀態會依序從 Pending (待定)、Running (執行中) 變成 Completed (完成)。若要更新狀態，您可以選擇 Actions (動作) 欄上的 **Refresh (重新整理)** 圖示。

## AWS CLI
<a name="emr-dev-create-stream-cli"></a>

這些範例示範如何使用 AWS CLI 來建立叢集並提交串流步驟。

**使用 建立叢集並提交串流步驟 AWS CLI**
+ 若要使用 建立叢集並提交串流步驟 AWS CLI，請輸入下列命令，並以 EC2 金鑰對的名稱取代 *myKey*。請注意，`--files` 的引數應該是指令碼位置的 Amazon S3 路徑，`-mapper` 和 `-reducer` 的引數應是對應指令碼檔案的名稱。

  ```
  aws emr create-cluster --name "Test cluster" --release-label emr-7.12.0 --applications Name=Hue Name=Hive Name=Pig --use-default-roles \
  --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3 \
  --steps Type=STREAMING,Name="Streaming Program",ActionOnFailure=CONTINUE,Args=[--files,pathtoscripts,-mapper,mapperscript,-reducer,reducerscript,aggregate,-input,pathtoinputdata,-output,pathtooutputbucket]
  ```
**注意**  
包含 Linux 行接續字元 (\$1) 是為了提高可讀性。它們可以在 Linux 命令中移除或使用。對於 Windows，請將其移除或取代為插入符號 (^)。

  若您未使用 `--instance-groups` 參數指定執行個體計數，即會啟動單一主節點，且剩餘執行個體會以核心節點的形式啟動。所有節點都會使用命令中指定的執行個體類型。
**注意**  
如果您先前尚未建立預設 Amazon EMR 服務角色和 EC2 執行個體設定檔，請先鍵入 aws `emr create-default-roles` 來建立這些項目，然後再鍵入 `create-cluster` 子命令。

  如需在 中使用 Amazon EMR 命令的詳細資訊 AWS CLI，請參閱 [https://docs.aws.amazon.com/cli/latest/reference/emr](https://docs.aws.amazon.com/cli/latest/reference/emr)。