

AWS Data Pipeline 不再提供給新客戶。的現有客戶 AWS Data Pipeline 可以繼續正常使用服務。[進一步了解](https://aws.amazon.com/blogs/big-data/migrate-workloads-from-aws-data-pipeline/)

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

# 活動
<a name="dp-object-activities"></a>

以下是 AWS Data Pipeline 活動物件：

**Topics**
+ [CopyActivity](dp-object-copyactivity.md)
+ [EmrActivity](dp-object-emractivity.md)
+ [HadoopActivity](dp-object-hadoopactivity.md)
+ [HiveActivity](dp-object-hiveactivity.md)
+ [HiveCopyActivity](dp-object-hivecopyactivity.md)
+ [PigActivity](dp-object-pigactivity.md)
+ [RedshiftCopyActivity](dp-object-redshiftcopyactivity.md)
+ [ShellCommandActivity](dp-object-shellcommandactivity.md)
+ [SqlActivity](dp-object-sqlactivity.md)

# CopyActivity
<a name="dp-object-copyactivity"></a>

將資料從一個位置複製到另一個位置。`CopyActivity` 支援 [S3DataNode](dp-object-s3datanode.md) 和 [SqlDataNode](dp-object-sqldatanode.md) 做為輸入及輸出，並且複製操作一般會針對每筆記錄逐一執行。不過，當符合下列所有條件時， `CopyActivity`會提供高效能的 Amazon S3 到 Amazon S3 複本：
+ 輸入及輸出皆為 S3DataNode。
+ 輸入及輸出的 `dataFormat` 欄位皆相同。

若您提供壓縮資料檔案做為輸入，而並未在 S3 資料節點上使用 `compression` 欄位指出，則 `CopyActivity` 可能會失敗。在這種情況下，`CopyActivity` 將無法正確地偵測記錄結尾字元，導致操作失敗。此外，`CopyActivity` 支援從目錄複製到另一個目錄，以及將檔案複製到目錄，但逐筆記錄複製會在將目錄複製到檔案時發生。最後， `CopyActivity` 不支援複製分段 Amazon S3 檔案。

`CopyActivity` 的 CSV 支援具有特定限制。當您使用 S3DataNode 做為 的輸入時`CopyActivity`，您只能將 CSV 資料檔案格式的 Unix/Linux 變體用於 Amazon S3 輸入和輸出欄位。Unix/Linux 變體需要下列項目：
+ 分隔符號必須是 "," (逗號) 字元。
+ 記錄不會加上引號。
+ 預設逸出字元是 ASCII 值 92 (反斜線)。
+ 記錄結尾識別符是 ASCII 值 10 (或 "\$1n")。

Windows 類型系統通常會使用不同的記錄結尾字元序列：一個歸位字元及一個換行字元 (ASCII 值 13 及 ASCII 值 10)。您必須使用額外的機制來配合此差異，例如使用一個預先複製指令碼來修改輸入資料，確保 `CopyActivity` 能正確地偵測記錄結尾；否則，`CopyActivity` 會不斷失敗。

使用 `CopyActivity` 從 PostgreSQL RDS 物件匯出到 TSV 資料格式時，預設 NULL 字元是 \$1n。

## 範例
<a name="copyactivity-example"></a>

以下為此物件類型的範例。此物件會參考三個您在相同管道定義檔案中定義的其他物件。`CopyPeriod` 是 `Schedule` 物件，`InputData` 和 `OutputData` 則是資料節點物件。

```
{
  "id" : "S3ToS3Copy",
  "type" : "CopyActivity",
  "schedule" : { "ref" : "CopyPeriod" },
  "input" : { "ref" : "InputData" },
  "output" : { "ref" : "OutputData" },
  "runsOn" : { "ref" : "MyEc2Resource" }
}
```

## 語法
<a name="copyactivity-syntax"></a>


****  

| 物件呼叫欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| schedule | 在排程間隔的執行期間會呼叫此物件。使用者必須指定另一個物件的排程參考，設定此物件的相依性執行順序。使用者可以明確設定物件的排程以滿足這項需求，例如，指定 "schedule": \$1"ref": "DefaultSchedule"\$1。在大部分的情況下，建議您將排程參考放在預設的管道物件，讓所有物件都繼承該排程。或者，如果管道有排程的樹狀目錄 (主排程內還有排程)，使用者可以建立有排程參考的父物件。如需範例選用排程組態的詳細資訊，請參閱[https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html)。 | 參考物件，例如 "schedule":\$1"ref":"myScheduleId"\$1 | 


****  

| 必要的群組 (下列其中之一為必要) | Description | 槽類型 | 
| --- | --- | --- | 
| runsOn | 執行活動或命令的可運算資源。例如，Amazon EC2 執行個體或 Amazon EMR 叢集。 | 參考物件，例如 "runsOn":\$1"ref":"myResourceId"\$1 | 
| workerGroup | 工作者群組。這是用於路由任務。如果您提供 runsOn 值，且 workerGroup 存在，則會忽略 workerGroup。 | String | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| attemptStatus | 遠端活動最新回報的狀態。 | String | 
| attemptTimeout | 遠端工作完成的逾時。如果設定，則系統可能會重試未在設定開始時間內完成的遠端活動。 | Period | 
| dependsOn | 指定與另一個可執行物件的相依性。 | 參考物件，例如 "dependsOn":\$1"ref":"myActivityId"\$1 | 
| failureAndRerunMode | 描述相依性故障或重新執行時的消費者節點行為 | 列舉 | 
| input | 輸入資料來源。 | 參考物件，例如 "input":\$1"ref":"myDataNodeId"\$1 | 
| lateAfterTimeout | 物件必須完成的管道啟動後經過的時間。只有在排程類型未設定為 時，才會觸發它ondemand。 | Period | 
| maxActiveInstances | 同時作用中的元件執行個體數目上限。重新執行不計入作用中的執行個體數量。 | Integer | 
| maximumRetries | 故障時嘗試重試的次數上限 | Integer | 
| onFail | 目前物件發生故障時要執行的動作。 | 參考物件，例如 "onFail":\$1"ref":"myActionId"\$1 | 
| onLateAction | 某個物件尚未排程或仍未完成時，應該觸發的動作。 | 參考物件，例如 "onLateAction":\$1"ref":"myActionId"\$1 | 
| onSuccess | 目前物件成功時要執行的動作。 | 參考物件，例如 "onSuccess":\$1"ref":"myActionId"\$1 | 
| output | 輸出資料來源。 | 參考物件，例如 "output":\$1"ref":"myDataNodeId"\$1 | 
| parent | 目前物件的父系，其插槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 
| pipelineLogUri | 上傳管道日誌的 S3 URI (例如 's3://BucketName/Key/')。 | String | 
| precondition | 選擇是否定義先決條件。在所有先決條件滿足前，資料節點不會標示為"READY"。 | 參考物件，例如 "precondition":\$1"ref":"myPreconditionId"\$1 | 
| reportProgressTimeout | 遠端工作連續呼叫 reportProgress 的逾時。如果設定，則不回報指定時段進度的遠端活動，可能會視為已停滯而重試。 | Period | 
| retryDelay | 兩次重試嘗試之間的逾時持續時間。 | Period | 
| scheduleType | 排程類型可讓您指定管道定義的物件應該排程在間隔開頭還是間隔結尾。時間序列樣式排程表示執行個體排程在每個間隔的結尾，而 Cron 樣式排程表示執行個體排程在每個間隔的開頭。隨需排程可讓您在每次啟用時執行一次管道。這表示您不必複製或重新建立管道，然後再執行一次。若您使用隨需排程，則必須在預設物件中指定此排程，且其必須是針對管道中物件指定的唯一 scheduleType。若要使用隨需管道，您只要針對每次後續執行呼叫 ActivatePipeline 操作即可。值為：Cron、ondemand 和 timeseries。 | 列舉 | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @activeInstances | 目前已排程的作用中執行個體物件清單。 | 參考物件，例如 "activeInstances":\$1"ref":"myRunnableObjectId"\$1 | 
| @actualEndTime | 此物件執行完成的時間。 | DateTime | 
| @actualStartTime | 此物件執行開始的時間。 | DateTime | 
| cancellationReason | 若此物件已取消，會提供 cancellationReason。 | String | 
| @cascadeFailedOn | 物件失敗所在相依性鏈的描述。 | 參考物件，例如 "cascadeFailedOn":\$1"ref":"myRunnableObjectId"\$1 | 
| emrStepLog | 只在 EMR 活動嘗試時才可使用的 EMR 步驟日誌 | String | 
| errorId | 若此物件失敗，會提供 errorId。 | String | 
| errorMessage | 若此物件失敗，會提供 errorMessage。 | String | 
| errorStackTrace | 如果此物件失敗，則為錯誤堆疊追蹤。 | String | 
| @finishedTime | 此物件完成其執行的時間。 | DateTime | 
| hadoopJobLog | 嘗試 EMR 型活動可用的 Hadoop 任務日誌。 | String | 
| @healthStatus | 反映已達終止狀態之最後一個物件執行個體成功或失敗的物件運作狀態。 | String | 
| @healthStatusFromInstanceId | 已達終止狀態之最後一個執行個體物件的 ID。 | String | 
| @healthStatusUpdatedTime | 上次更新運作狀態的時間。 | DateTime | 
| hostname | 選取任務嘗試之用戶端的主機名稱。 | String | 
| @lastDeactivatedTime | 此物件最後停用的時間。 | DateTime | 
| @latestCompletedRunTime | 執行完成最近一次執行的時間。 | DateTime | 
| @latestRunTime | 執行排程最近一次執行的時間。 | DateTime | 
| @nextRunTime | 下次要排程執行的時間。 | DateTime | 
| reportProgressTime | 遠端活動最近報告進度的時間。 | DateTime | 
| @scheduledEndTime | 物件的排程結束時間 | DateTime | 
| @scheduledStartTime | 物件的排程開始時間 | DateTime | 
| @status | 此物件的狀態。 | String | 
| @version | 建立物件使用的管道版本。 | String | 
| @waitingOn | 此物件等待之相依性清單的描述。 | 參考物件，例如 "waitingOn":\$1"ref":"myRunnableObjectId"\$1 | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤 | String | 
| @pipelineId | 此物件所屬管道的 ID | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件 | String | 

## 另請參閱
<a name="copyactivity-seealso"></a>
+ [ShellCommandActivity](dp-object-shellcommandactivity.md)
+ [EmrActivity](dp-object-emractivity.md)
+ [使用 將 MySQL 資料匯出至 Amazon S3 AWS Data Pipeline](dp-copydata-mysql.md)

# EmrActivity
<a name="dp-object-emractivity"></a>

 執行 EMR 叢集。

AWS Data Pipeline 針對步驟使用與 Amazon EMR 不同的格式；例如，在`EmrActivity`步驟欄位中的 JAR 名稱後面 AWS Data Pipeline 使用逗號分隔引數。下列範例顯示針對 Amazon EMR 格式化的步驟，後面接著其 AWS Data Pipeline 對等項目：

```
s3://amzn-s3-demo-bucket/MyWork.jar arg1 arg2 arg3
```

```
"s3://amzn-s3-demo-bucket/MyWork.jar,arg1,arg2,arg3"
```

## 範例
<a name="emractivity-example"></a>

以下為此物件類型的範例。此範例使用舊版 Amazon EMR。驗證此範例與您正在使用的 Amazon EMR 叢集版本是否正確。

此物件會參考三個您在相同管道定義檔案中定義的其他物件。`MyEmrCluster` 是 `EmrCluster` 物件，`MyS3Input` 和 `MyS3Output` 則是 `S3DataNode` 物件。

**注意**  
在此範例中，您可以將 `step` 欄位取代成您所需的叢集字串，該字串可以是 Pig 指令碼、Hadoop 串流叢集、您自己的 JAR (包含參數) 等。

Hadoop 2.x (AMI 3.x)

```
{
  "id" : "MyEmrActivity",
  "type" : "EmrActivity",
  "runsOn" : { "ref" : "MyEmrCluster" },
  "preStepCommand" : "scp remoteFiles localFiles",
  "step" : ["s3://amzn-s3-demo-bucket/myPath/myStep.jar,firstArg,secondArg,-files,s3://amzn-s3-demo-bucket/myPath/myFile.py,-input,s3://myinputbucket/path,-output,s3://myoutputbucket/path,-mapper,myFile.py,-reducer,reducerName","s3://amzn-s3-demo-bucket/myPath/myotherStep.jar,..."],
  "postStepCommand" : "scp localFiles remoteFiles",
  "input" : { "ref" : "MyS3Input" },
  "output" : { "ref" : "MyS3Output" }
}
```

**注意**  
若要在步驟中將引述傳遞給應用程式，您需要在指令碼的路徑中指定區域，如以下範例所示。此外，您可能需要逸出您傳遞的引數。例如，若您使用 `script-runner.jar` 執行殼層指令碼，並希望將引數傳遞給指令碼，您必須逸出分隔他們的逗號。以下步驟位置示範如何執行此作業：  

```
"step" : "s3://eu-west-1.elasticmapreduce/libs/script-runner/script-runner.jar,s3://datapipeline/echo.sh,a\\\\,b\\\\,c"
```
此步驟使用 `script-runner.jar` 執行 `echo.sh` 殼層指令碼，並將 `a`、`b` 和 `c` 做為單一引數傳遞給指令碼。第一個逸出字元會從結果引數中移除，因此您可能需要再次進行逸出。例如，若您在 JSON 使用 `File\.gz` 做為引數，您可以使用 `File\\\\.gz` 來逸出它。但是，由於第一個逸出會遭到捨棄，因此您必須使用 `File\\\\\\\\.gz `。

## 語法
<a name="emractivity-syntax"></a>


****  

| 物件呼叫欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| schedule | 在排程間隔的執行期間會呼叫此物件。指定其他物件的排程參考，以設定此物件的相依性執行順序。您可以在物件上明確設定排程以滿足這項要求，例如，指定 "schedule": \$1"ref": "DefaultSchedule"\$1。在大部分的情況下，建議您將排程參考放在預設的管道物件，讓所有物件都繼承該排程。或者，如果管道有排程的樹狀目錄 (主排程內還有排程)，您可以建立含排程參考的父物件。如需範例選用排程組態的詳細資訊，請參閱[https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html)。 | 參考物件，例如 "schedule":\$1"ref":"myScheduleId"\$1 | 

 


****  

| 必要的群組 (下列其中之一為必要) | Description | 槽類型 | 
| --- | --- | --- | 
| runsOn | 執行此任務的 Amazon EMR 叢集。 | 參考物件，例如 "runsOn":\$1"ref":"myEmrClusterId"\$1 | 
| workerGroup | 工作者群組。這是用於路由任務。如果您提供 runsOn 值，且 workerGroup 存在，則會忽略 workerGroup。 | String | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| attemptStatus | 遠端活動最新回報的狀態。 | String | 
| attemptTimeout | 遠端工作完成的逾時。如果設定，則系統可能會重試未在設定開始時間內完成的遠端活動。 | Period | 
| dependsOn | 指定與另一個可執行物件的相依性。 | 參考物件，例如 "dependsOn":\$1"ref":"myActivityId"\$1 | 
| failureAndRerunMode | 描述相依性故障或重新執行時的消費者節點行為。 | 列舉 | 
| input | 輸入資料的位置。 | 參考物件，例如 "input":\$1"ref":"myDataNodeId"\$1 | 
| lateAfterTimeout | 物件必須完成的管道啟動後經過的時間。只有在排程類型未設定為 時，才會觸發它ondemand。 | Period | 
| maxActiveInstances | 同時作用中的元件執行個體數目上限。重新執行不計入作用中的執行個體數量。 | Integer | 
| maximumRetries | 故障時嘗試重試的次數上限。 | Integer | 
| onFail | 目前物件發生故障時要執行的動作。 | 參考物件，例如 "onFail":\$1"ref":"myActionId"\$1 | 
| onLateAction | 某個物件尚未排程或仍未完成時，應該觸發的動作。 | 參考物件，例如 "onLateAction":\$1"ref":"myActionId"\$1 | 
| onSuccess | 目前物件成功時要執行的動作。 | 參考物件，例如 "onSuccess":\$1"ref":"myActionId"\$1 | 
| output | 輸出資料的位置。 | 參考物件，例如 "output":\$1"ref":"myDataNodeId"\$1 | 
| parent | 目前物件的父系，其槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 
| pipelineLogUri | 用於上傳管道日誌的 Amazon S3 URI，例如 's3：//BucketName/Prefix/'。 | String | 
| postStepCommand | 完成所有步驟後要執行的 Shell 指令碼。若要指定多個指令碼 (最多 255 個)，請新增多個 postStepCommand 欄位。 | String | 
| precondition | 選擇是否定義先決條件。在所有先決條件滿足前，資料節點不會標示為"READY"。 | 參考物件，例如 "precondition":\$1"ref":"myPreconditionId"\$1 | 
| preStepCommand | 執行任何步驟之前要執行的 Shell 指令碼。若要指定多個指令碼 (最多 255 個)，請新增多個 preStepCommand 欄位。 | String | 
| reportProgressTimeout | 遠端工作連續呼叫 reportProgress 的逾時。如果設定，則不回報指定時段進度的遠端活動，可能會視為已停滯而重試。 | Period | 
| resizeClusterBeforeRunning |  在執行此活動之前調整叢集的大小，以容納指定為輸入或輸出的 DynamoDB 資料表。  如果您的 `EmrActivity`使用 `DynamoDBDataNode`做為輸入或輸出資料節點，而且如果您`resizeClusterBeforeRunning`將 設定為 `TRUE`，則 會使用`m3.xlarge`執行個體類型 AWS Data Pipeline 開始。這會將您選擇的執行個體類型覆寫為 `m3.xlarge`，可能會增加您的每月成本。   | Boolean | 
| resizeClusterMaxInstances | 調整大小演算法可請求的執行個體數目上限。 | Integer | 
| retryDelay | 兩次重試嘗試之間的逾時持續時間。 | Period | 
| scheduleType | 排程類型可讓您指定管道定義的物件應該排程在間隔開頭還是間隔結尾。值為：cron、ondemand 和 timeseries。timeseries 排程表示執行個體會排程在每個間隔的結尾。cron 排程表示執行個體會排程在每個間隔的開頭。ondemand 排程可讓您在每次啟用時執行一次管道。您不必複製或重新建立管道，然後再執行一次。若您使用 ondemand 排程，則必須在預設物件中指定此排程，且其必須是針對管道中物件指定的唯一 scheduleType。若要使用 ondemand 管道，請針對每次後續執行呼叫 ActivatePipeline 操作。 | 列舉 | 
| 步驟 | 叢集要執行的一或多個步驟。若要指定多個步驟 (最多 255 個)，請新增多個步驟欄位。在 JAR 名稱後方，使用逗號分隔的引數，例如 s3://amzn-s3-demo-bucket/MyWork.jar,arg1,arg2,arg3。 | String | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @activeInstances | 目前已排程的作用中執行個體物件清單。 | 參考物件，例如 "activeInstances":\$1"ref":"myRunnableObjectId"\$1 | 
| @actualEndTime | 此物件執行完成的時間。 | DateTime | 
| @actualStartTime | 此物件執行開始的時間。 | DateTime | 
| cancellationReason | 若此物件已取消，會提供 cancellationReason。 | String | 
| @cascadeFailedOn | 物件失敗所在的相依鏈的描述。 | 參考物件，例如 "cascadeFailedOn":\$1"ref":"myRunnableObjectId"\$1 | 
| emrStepLog | Amazon EMR 步驟日誌僅適用於 EMR 活動嘗試 | String | 
| errorId | 若此物件失敗，會提供 errorId。 | String | 
| errorMessage | 若此物件失敗，會提供 errorMessage。 | String | 
| errorStackTrace | 如果此物件失敗，則為錯誤堆疊追蹤。 | String | 
| @finishedTime | 此物件完成其執行的時間。 | DateTime | 
| hadoopJobLog | 嘗試 EMR 型活動可用的 Hadoop 任務日誌。 | String | 
| @healthStatus | 反映已達終止狀態之最後一個物件執行個體成功或失敗的物件運作狀態。 | String | 
| @healthStatusFromInstanceId | 已達終止狀態之最後一個執行個體物件的 ID。 | String | 
| @healthStatusUpdatedTime | 上次更新運作狀態的時間。 | DateTime | 
| hostname | 選取任務嘗試之用戶端的主機名稱。 | String | 
| @lastDeactivatedTime | 此物件最後停用的時間。 | DateTime | 
| @latestCompletedRunTime | 執行完成最近一次執行的時間。 | DateTime | 
| @latestRunTime | 執行排程最近一次執行的時間。 | DateTime | 
| @nextRunTime | 下次要排程執行的時間。 | DateTime | 
| reportProgressTime | 遠端活動最近報告進度的時間。 | DateTime | 
| @scheduledEndTime | 物件的排程結束時間。 | DateTime | 
| @scheduledStartTime | 物件的排程開始時間。 | DateTime | 
| @status | 此物件的狀態。 | String | 
| @version | 建立物件時使用的管道版本。 | String | 
| @waitingOn | 此物件等待之相依性清單的描述。 | 參考物件，例如 "waitingOn":\$1"ref":"myRunnableObjectId"\$1 | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤。 | String | 
| @pipelineId | 此物件所屬管道的 ID。 | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件。 | String | 

## 另請參閱
<a name="emractivity-seealso"></a>
+ [ShellCommandActivity](dp-object-shellcommandactivity.md)
+ [CopyActivity](dp-object-copyactivity.md)
+ [EmrCluster](dp-object-emrcluster.md)

# HadoopActivity
<a name="dp-object-hadoopactivity"></a>

 在叢集上執行 MapReduce 任務。叢集可以是受 AWS Data Pipeline 管理的 EMR 叢集，或是另一個資源 (若您使用 TaskRunner 的話)。請在您希望平行執行工作時使用 HadoopActivity。這可讓您使用 YARN 框架的排程資源，或是 Hadoop 1 中的 MapReduce 資源交涉程式。如果您想要使用 Amazon EMR Step 動作依序執行工作，您仍然可以使用 [EmrActivity](dp-object-emractivity.md)。

## 範例
<a name="hadoopactivity-example"></a>

**使用 管理的 EMR 叢集的 HadoopActivity AWS Data Pipeline**  
以下 HadoopActivity 物件會使用 EmrCluster 資源來執行程式：

```
 {
   "name": "MyHadoopActivity",
   "schedule": {"ref": "ResourcePeriod"},
   "runsOn": {"ref": “MyEmrCluster”},
   "type": "HadoopActivity",
   "preActivityTaskConfig":{"ref":"preTaskScriptConfig”},   
   "jarUri": "/home/hadoop/contrib/streaming/hadoop-streaming.jar",
   "argument": [
     "-files",
     “s3://elasticmapreduce/samples/wordcount/wordSplitter.py“,
     "-mapper",
     "wordSplitter.py",
     "-reducer",
     "aggregate",
     "-input",
     "s3://elasticmapreduce/samples/wordcount/input/",
     "-output",
     “s3://amzn-s3-demo-bucket/MyHadoopActivity/#{@pipelineId}/#{format(@scheduledStartTime,'YYYY-MM-dd')}"
   ],
   "maximumRetries": "0",
   "postActivityTaskConfig":{"ref":"postTaskScriptConfig”},
   "hadoopQueue" : “high”
 }
```

以下是對應的 *MyEmrCluster*，它會為 Hadoop 2 類型的 AMI 設定 YARN 中的 FairScheduler 和佇列。

```
{
  "id" : "MyEmrCluster",
  "type" : "EmrCluster",
   "hadoopSchedulerType" : "PARALLEL_FAIR_SCHEDULING",
  “amiVersion” : “3.7.0”,
  "bootstrapAction" : ["s3://Region.elasticmapreduce/bootstrap-actions/configure-hadoop,-z,yarn.scheduler.capacity.root.queues=low\,high\,default,-z,yarn.scheduler.capacity.root.high.capacity=50,-z,yarn.scheduler.capacity.root.low.capacity=10,-z,yarn.scheduler.capacity.root.default.capacity=30”]
}
```

此為您用來在 Hadoop 1 中設定 FairScheduler 的 EmrCluster：

```
{
      "id": "MyEmrCluster",
      "type": "EmrCluster",    
      "hadoopSchedulerType": "PARALLEL_FAIR_SCHEDULING",
      "amiVersion": "2.4.8",
      "bootstrapAction": "s3://Region.elasticmapreduce/bootstrap-actions/configure-hadoop,-m,mapred.queue.names=low\\\\,high\\\\,default,-m,mapred.fairscheduler.poolnameproperty=mapred.job.queue.name"
          }
```

以下 EmrCluster 會為 Hadoop 2 類型的 AMI 設定 CapacityScheduler：

```
{
      "id": "MyEmrCluster",
      "type": "EmrCluster",
      "hadoopSchedulerType": "PARALLEL_CAPACITY_SCHEDULING",
      "amiVersion": "3.7.0",
      "bootstrapAction": "s3://Region.elasticmapreduce/bootstrap-actions/configure-hadoop,-z,yarn.scheduler.capacity.root.queues=low\\\\,high,-z,yarn.scheduler.capacity.root.high.capacity=40,-z,yarn.scheduler.capacity.root.low.capacity=60"
    }
```

**使用現有 EMR 叢集的 HadoopActivity**  
在此範例中，您可以使用工作者群組和 TaskRunner 來執行現有 EMR 叢集上的程式。以下管道定義會使用 HadoopActivity 來：
+ 只在 *myWorkerGroup* 資源上執行 MapReduce 程式。如需工作者群組的詳細資訊，請參閱[使用任務執行器在現有資源上執行工作](dp-how-task-runner-user-managed.md)。
+ 執行 preActivityTaskConfig 和 postActivityTaskConfig

```
{
  "objects": [
    {
      "argument": [
        "-files",
        "s3://elasticmapreduce/samples/wordcount/wordSplitter.py",
        "-mapper",
        "wordSplitter.py",
        "-reducer",
        "aggregate",
        "-input",
        "s3://elasticmapreduce/samples/wordcount/input/",
        "-output",
        "s3://amzn-s3-demo-bucket/MyHadoopActivity/#{@pipelineId}/#{format(@scheduledStartTime,'YYYY-MM-dd')}"
      ],
      "id": "MyHadoopActivity",
      "jarUri": "/home/hadoop/contrib/streaming/hadoop-streaming.jar",
      "name": "MyHadoopActivity",
      "type": "HadoopActivity"
    },
    {
      "id": "SchedulePeriod",
      "startDateTime": "start_datetime",
      "name": "SchedulePeriod",
      "period": "1 day",
      "type": "Schedule",
      "endDateTime": "end_datetime"
    },
    {
      "id": "ShellScriptConfig",
      "scriptUri": "s3://amzn-s3-demo-bucket/scripts/preTaskScript.sh",
      "name": "preTaskScriptConfig",
      "scriptArgument": [
        "test",
        "argument"
      ],
      "type": "ShellScriptConfig"
    },
    {
      "id": "ShellScriptConfig",
      "scriptUri": "s3://amzn-s3-demo-bucket/scripts/postTaskScript.sh",
      "name": "postTaskScriptConfig",
      "scriptArgument": [
        "test",
        "argument"
      ],
      "type": "ShellScriptConfig"
    },
    {
      "id": "Default",
      "scheduleType": "cron",
      "schedule": {
        "ref": "SchedulePeriod"
      },
      "name": "Default",
      "pipelineLogUri": "s3://amzn-s3-demo-bucket/logs/2015-05-22T18:02:00.343Z642f3fe415",
      "maximumRetries": "0",    
      "workerGroup": "myWorkerGroup",
      "preActivityTaskConfig": {
        "ref": "preTaskScriptConfig"
      },
      "postActivityTaskConfig": {
        "ref": "postTaskScriptConfig"
      }    
    }
  ] 
}
```

## 語法
<a name="hadoopactivity-syntax"></a>


****  

| 必要欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| jarUri | 在 Amazon S3 或叢集的本機檔案系統中，要搭配執行 HadoopActivity 的 JAR 位置。 | String | 

 


****  

| 物件呼叫欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| schedule | 在排程間隔的執行期間會呼叫此物件。使用者必須指定另一個物件的排程參考，設定此物件的相依性執行順序。使用者可以明確設定物件的排程以滿足這項需求，例如，指定 "schedule": \$1"ref": "DefaultSchedule"\$1。在大部分的情況下，建議您將排程參考放在預設的管道物件，讓所有物件都繼承該排程。或者，如果管道有排程的樹狀目錄 (主排程內還有排程)，使用者可以建立有排程參考的父物件。如需範例選用排程組態的詳細資訊，請參閱[https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html)。 | 參考物件，例如 "schedule":\$1"ref":"myScheduleId"\$1 | 

 


****  

| 必要的群組 (下列其中之一為必要) | Description | 槽類型 | 
| --- | --- | --- | 
| runsOn | 要在其中執行此任務的 EMR 叢集。 | 參考物件，例如 "runsOn":\$1"ref":"myEmrClusterId"\$1 | 
| workerGroup | 工作者群組。這是用於路由任務。如果您提供 runsOn 值，且 workerGroup 存在，則會忽略 workerGroup。 | String | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| argument | 要傳遞給 JAR 的引數。 | String | 
| attemptStatus | 遠端活動最新回報的狀態。 | String | 
| attemptTimeout | 遠端工作完成的逾時。如果設定，則系統可能會重試未在設定開始時間內完成的遠端活動。 | Period | 
| dependsOn | 指定與另一個可執行物件的相依性。 | 參考物件，例如 "dependsOn":\$1"ref":"myActivityId"\$1 | 
| failureAndRerunMode | 描述相依性故障或重新執行時的消費者節點行為 | 列舉 | 
| hadoopQueue | 要提交活動至其中的 Hadoop 排程器佇列名稱。 | String | 
| input | 輸入資料的位置。 | 參考物件，例如 "input":\$1"ref":"myDataNodeId"\$1 | 
| lateAfterTimeout | 物件必須完成的管道啟動後經過的時間。只有在排程類型未設定為 時，才會觸發它ondemand。 | Period | 
| mainClass | 搭配執行 HadoopActivity 的 JAR 主要類別。 | String | 
| maxActiveInstances | 同時作用中的元件執行個體數目上限。重新執行不計入作用中的執行個體數量。 | Integer | 
| maximumRetries | 故障時嘗試重試的次數上限 | Integer | 
| onFail | 目前物件發生故障時要執行的動作。 | 參考物件，例如 "onFail":\$1"ref":"myActionId"\$1 | 
| onLateAction | 某個物件尚未排程或仍未完成時，應該觸發的動作。 | 參考物件，例如 "onLateAction":\$1"ref":"myActionId"\$1 | 
| onSuccess | 目前物件成功時要執行的動作。 | 參考物件，例如 "onSuccess":\$1"ref":"myActionId"\$1 | 
| output | 輸出資料的位置。 | 參考物件，例如 "output":\$1"ref":"myDataNodeId"\$1 | 
| parent | 目前物件的父系，其插槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 
| pipelineLogUri | 上傳管道日誌的 S3 URI (例如 's3://BucketName/Key/')。 | String | 
| postActivityTaskConfig | 要執行的活動後組態指令碼。這包含 Amazon S3 中的 shell 指令碼 URI 和引數清單。 | 參考物件，例如 "postActivityTaskConfig":\$1"ref":"myShellScriptConfigId"\$1 | 
| preActivityTaskConfig | 要執行的活動前組態指令碼。這包含 Amazon S3 中的 shell 指令碼 URI 和引數清單。 | 參考物件，例如 "preActivityTaskConfig":\$1"ref":"myShellScriptConfigId"\$1 | 
| precondition | 選擇是否定義先決條件。在所有先決條件滿足前，資料節點不會標示為"READY"。 | 參考物件，例如 "precondition":\$1"ref":"myPreconditionId"\$1 | 
| reportProgressTimeout | 遠端工作連續呼叫 reportProgress 的逾時。如果設定，則不回報指定時段進度的遠端活動，可能會視為已停滯而重試。 | Period | 
| retryDelay | 兩次重試嘗試之間的逾時持續時間。 | Period | 
| scheduleType | 排程類型可讓您指定管道定義的物件應該排程在間隔開頭還是間隔結尾。時間序列樣式排程表示執行個體排程在每個間隔的結尾，而 Cron 樣式排程表示執行個體排程在每個間隔的開頭。隨需排程可讓您在每次啟用時執行一次管道。這表示您不必複製或重新建立管道，然後再執行一次。若您使用隨需排程，則必須在預設物件中指定此排程，且其必須是針對管道中物件指定的唯一 scheduleType。若要使用隨需管道，您只要針對每次後續執行呼叫 ActivatePipeline 操作即可。值為：Cron、ondemand 和 timeseries。 | 列舉 | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @activeInstances | 目前已排程的作用中執行個體物件清單。 | 參考物件，例如 "activeInstances":\$1"ref":"myRunnableObjectId"\$1 | 
| @actualEndTime | 此物件執行完成的時間。 | DateTime | 
| @actualStartTime | 此物件執行開始的時間。 | DateTime | 
| cancellationReason | 若此物件已取消，會提供 cancellationReason。 | String | 
| @cascadeFailedOn | 物件失敗所在的相依鏈的描述。 | 參考物件，例如 "cascadeFailedOn":\$1"ref":"myRunnableObjectId"\$1 | 
| emrStepLog | 只在 EMR 活動嘗試時才可使用的 EMR 步驟日誌 | String | 
| errorId | 若此物件失敗，會提供 errorId。 | String | 
| errorMessage | 若此物件失敗，會提供 errorMessage。 | String | 
| errorStackTrace | 如果此物件失敗，則為錯誤堆疊追蹤。 | String | 
| @finishedTime | 此物件完成其執行的時間。 | DateTime | 
| hadoopJobLog | 嘗試 EMR 型活動可用的 Hadoop 任務日誌。 | String | 
| @healthStatus | 反映已達終止狀態之最後一個物件執行個體成功或失敗的物件運作狀態。 | String | 
| @healthStatusFromInstanceId | 已達終止狀態之最後一個執行個體物件的 ID。 | String | 
| @healthStatusUpdatedTime | 上次更新運作狀態的時間。 | DateTime | 
| hostname | 選取任務嘗試之用戶端的主機名稱。 | String | 
| @lastDeactivatedTime | 此物件最後停用的時間。 | DateTime | 
| @latestCompletedRunTime | 執行完成最近一次執行的時間。 | DateTime | 
| @latestRunTime | 執行排程最近一次執行的時間。 | DateTime | 
| @nextRunTime | 下次要排程執行的時間。 | DateTime | 
| reportProgressTime | 遠端活動最近報告進度的時間。 | DateTime | 
| @scheduledEndTime | 物件的排程結束時間 | DateTime | 
| @scheduledStartTime | 物件的排程開始時間 | DateTime | 
| @status | 此物件的狀態。 | String | 
| @version | 建立物件使用的管道版本。 | String | 
| @waitingOn | 此物件等待之相依性清單的描述。 | 參考物件，例如 "waitingOn":\$1"ref":"myRunnableObjectId"\$1 | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤。 | String | 
| @pipelineId | 此物件所屬管道的 ID。 | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件。 | String | 

## 另請參閱
<a name="hadoopactivity-seealso"></a>
+ [ShellCommandActivity](dp-object-shellcommandactivity.md)
+ [CopyActivity](dp-object-copyactivity.md)
+ [EmrCluster](dp-object-emrcluster.md)

# HiveActivity
<a name="dp-object-hiveactivity"></a>

在 EMR 叢集上執行 Hive 查詢。 `HiveActivity` 可讓您更輕鬆地設定 Amazon EMR 活動，並根據來自 Amazon S3 或 Amazon RDS 的輸入資料自動建立 Hive 資料表。您只需要指定要在來源資料上執行的 HiveQL。 會根據`HiveActivity`物件中的輸入欄位，以 `${input1}`、 `${input2}`等方式 AWS Data Pipeline 自動建立 Hive 資料表。

對於 Amazon S3 輸入， `dataFormat` 欄位用於建立 Hive 資料欄名稱。

對於 MySQL (Amazon RDS) 輸入，SQL 查詢的資料欄名稱用於建立 Hive 資料欄名稱。

**注意**  
此活動使用 Hive [CSV Serde](https://cwiki.apache.org/confluence/display/Hive/CSV+Serde)。

## 範例
<a name="hiveactivity-example"></a>

以下為此物件類型的範例。此物件會參考三個您在相同管道定義檔案中定義的其他物件。`MySchedule` 是 `Schedule` 物件，`MyS3Input` 和 `MyS3Output` 則是資料節點物件。

```
{
  "name" : "ProcessLogData",
  "id" : "MyHiveActivity",
  "type" : "HiveActivity",
  "schedule" : { "ref": "MySchedule" },
  "hiveScript" : "INSERT OVERWRITE TABLE ${output1} select host,user,time,request,status,size from ${input1};",
  "input" : { "ref": "MyS3Input" },
  "output" : { "ref": "MyS3Output" },
  "runsOn" : { "ref": "MyEmrCluster" }
}
```

## 語法
<a name="hiveactivity-syntax"></a>


****  

| 物件呼叫欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| schedule | 在排程間隔的執行期間會呼叫此物件。指定其他物件的排程參考，以設定此物件的相依性執行順序。您可以在物件上明確設定排程以滿足這項要求，例如，指定 "schedule": \$1"ref": "DefaultSchedule"\$1。在大部分的情況下，建議您將排程參考放在預設的管道物件，讓所有物件都繼承該排程。或者，如果管道有排程的樹狀目錄 (主排程內還有排程)，您可以建立含排程參考的父物件。如需範例選用排程組態的詳細資訊，請參閱 [https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html)。 | 參考物件，例如 "schedule":\$1"ref":"myScheduleId"\$1 | 

 


****  

| 必要的群組 (下列其中之一為必要) | Description | 槽類型 | 
| --- | --- | --- | 
| hiveScript | 要執行的 Hive 指令碼。 | String | 
| scriptUri | 要執行的 Hive 指令碼位置 (例如 s3://scriptLocation)。 | String | 

 


****  

| 必要群組 | Description | 槽類型 | 
| --- | --- | --- | 
| runsOn | 要在其上執行此 HiveActivity 的 EMR 叢集。 | 參考物件，例如 "runsOn":\$1"ref":"myEmrClusterId"\$1 | 
| workerGroup | 工作者群組。這是用於路由任務。如果您提供 runsOn 值，且 workerGroup 存在，則會忽略 workerGroup。 | String | 
| input | 輸入資料來源。 | 參考物件，例如 "input":\$1"ref":"myDataNodeId"\$1 | 
| output | 輸出資料來源。 | 參考物件，例如 "output":\$1"ref":"myDataNodeId"\$1 | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| attemptStatus | 遠端活動最新回報的狀態。 | String | 
| attemptTimeout | 遠端工作完成的逾時。如果設定，則系統可能會重試未在設定開始時間內完成的遠端活動。 | Period | 
| dependsOn | 指定與另一個可執行物件的相依性。 | 參考物件，例如 "dependsOn":\$1"ref":"myActivityId"\$1 | 
| failureAndRerunMode | 描述相依性故障或重新執行時的消費者節點行為。 | 列舉 | 
| hadoopQueue | 要提交任務至其中的 Hadoop 排程器佇列名稱。 | String | 
| lateAfterTimeout | 物件必須完成的管道啟動後經過的時間。只有在排程類型未設定為 時，才會觸發它ondemand。 | Period | 
| maxActiveInstances | 同時作用中的元件執行個體數目上限。重新執行不計入作用中的執行個體數量。 | Integer | 
| maximumRetries | 故障時嘗試重試的次數上限。 | Integer | 
| onFail | 目前物件發生故障時要執行的動作。 | 參考物件，例如 "onFail":\$1"ref":"myActionId"\$1 | 
| onLateAction | 某個物件尚未排程或仍未完成時，應該觸發的動作。 | 參考物件，例如 "onLateAction":\$1"ref":"myActionId"\$1 | 
| onSuccess | 目前物件成功時要執行的動作。 | 參考物件，例如 "onSuccess":\$1"ref":"myActionId"\$1 | 
| parent | 目前物件的父系，其插槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 
| pipelineLogUri | 上傳管道日誌的 S3 URI (例如 's3://BucketName/Key/')。 | String | 
| postActivityTaskConfig | 要執行的活動後組態指令碼。這包含 Amazon S3 中的 shell 指令碼 URI 和引數清單。 | 參考物件，例如 "postActivityTaskConfig":\$1"ref":"myShellScriptConfigId"\$1 | 
| preActivityTaskConfig | 要執行的活動前組態指令碼。這包含 Amazon S3 中的 shell 指令碼 URI 和引數清單。 | 參考物件，例如 "preActivityTaskConfig":\$1"ref":"myShellScriptConfigId"\$1 | 
| precondition | 選擇是否定義先決條件。在所有先決條件滿足前，資料節點不會標示為"READY"。 | 參考物件，例如 "precondition":\$1"ref":"myPreconditionId"\$1 | 
| reportProgressTimeout | 遠端工作連續呼叫 reportProgress 的逾時。如果設定，則不回報指定時段進度的遠端活動，可能會視為已停滯而重試。 | Period | 
| resizeClusterBeforeRunning | 在執行此活動之前調整叢集的大小，以容納指定為輸入或輸出的 DynamoDB 資料節點。 如果您的活動使用 `DynamoDBDataNode`做為輸入或輸出資料節點，而且如果您`resizeClusterBeforeRunning`將 設定為 `TRUE`，則 會使用`m3.xlarge`執行個體類型 AWS Data Pipeline 開始。這會將您選擇的執行個體類型覆寫為 `m3.xlarge`，可能會增加您的每月成本。  | Boolean | 
| resizeClusterMaxInstances | 調整大小演算法可請求的執行個體數目上限。 | Integer | 
| retryDelay | 兩次重試嘗試之間的逾時持續時間。 | Period | 
| scheduleType | 排程類型可讓您指定管道定義的物件應該排程在間隔開頭還是間隔結尾。時間序列樣式排程表示執行個體排程在每個間隔的結尾，而 Cron 樣式排程表示執行個體排程在每個間隔的開頭。隨需排程可讓您在每次啟用時執行一次管道。這表示您不必複製或重新建立管道，然後再執行一次。若您使用隨需排程，則必須在預設物件中指定此排程，且其必須是針對管道中物件指定的唯一 scheduleType。若要使用隨需管道，您只要針對每次後續執行呼叫 ActivatePipeline 操作即可。值為：Cron、ondemand 和 timeseries。 | 列舉 | 
| scriptVariable | 指定執行指令碼時要傳遞給 Hive 的 Amazon EMR 指令碼變數。例如，以下範例指令碼變數會將 SAMPLE 和 FILTER\$1DATE 變數傳遞給 Hive：SAMPLE=s3://elasticmapreduce/samples/hive-ads 和  FILTER\$1DATE=\$1\$1format(@scheduledStartTime,'YYYY-MM-dd')\$1%。此欄位接受多個值，並可使用 script 和 scriptUri 欄位。此外，無論預備是設為 true 或 false，scriptVariable 都會正常運作。此欄位在使用 AWS Data Pipeline 表達式和函數，將動態值傳送給 Hive 時特別有用。 | String | 
| stage | 決定在執行指令碼之前或之後是否啟用預備。Hive 11 不允許，因此請使用 Amazon EMR AMI 3.2.0 版或更新版本。 | Boolean | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @activeInstances | 目前已排程的作用中執行個體物件清單。 | 參考物件，例如 "activeInstances":\$1"ref":"myRunnableObjectId"\$1 | 
| @actualEndTime | 此物件執行完成的時間。 | DateTime | 
| @actualStartTime | 此物件執行開始的時間。 | DateTime | 
| cancellationReason | 若此物件已取消，會提供 cancellationReason。 | String | 
| @cascadeFailedOn | 物件失敗所在的相依鏈的描述。 | 參考物件，例如 "cascadeFailedOn":\$1"ref":"myRunnableObjectId"\$1 | 
| emrStepLog | Amazon EMR 步驟日誌僅適用於 EMR 活動嘗試。 | String | 
| errorId | 若此物件失敗，會提供 errorId。 | String | 
| errorMessage | 若此物件失敗，會提供 errorMessage。 | String | 
| errorStackTrace | 如果此物件失敗，則為錯誤堆疊追蹤。 | String | 
| @finishedTime | 此物件完成其執行的時間。 | DateTime | 
| hadoopJobLog | 嘗試 EMR 型活動可用的 Hadoop 任務日誌。 | String | 
| @healthStatus | 反映已達終止狀態之最後一個物件執行個體成功或失敗的物件運作狀態。 | String | 
| @healthStatusFromInstanceId | 已達終止狀態之最後一個執行個體物件的 ID。 | String | 
| @healthStatusUpdatedTime | 上次更新運作狀態的時間。 | DateTime | 
| hostname | 選取任務嘗試之用戶端的主機名稱。 | String | 
| @lastDeactivatedTime | 此物件最後停用的時間。 | DateTime | 
| @latestCompletedRunTime | 執行完成最近一次執行的時間。 | DateTime | 
| @latestRunTime | 執行排程最近一次執行的時間。 | DateTime | 
| @nextRunTime | 下次要排程執行的時間。 | DateTime | 
| reportProgressTime | 遠端活動最近報告進度的時間。 | DateTime | 
| @scheduledEndTime | 物件的排程結束時間。 | DateTime | 
| @scheduledStartTime | 物件的排程啟動時間。 | DateTime | 
| @status | 此物件的狀態。 | String | 
| @version | 建立物件使用的管道版本。 | String | 
| @waitingOn | 此物件等待之相依性清單的描述。 | 參考物件，例如 "waitingOn":\$1"ref":"myRunnableObjectId"\$1 | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤。 | String | 
| @pipelineId | 此物件所屬管道的 ID。 | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件。 | String | 

## 另請參閱
<a name="hiveactivity-seealso"></a>
+ [ShellCommandActivity](dp-object-shellcommandactivity.md)
+ [EmrActivity](dp-object-emractivity.md)

# HiveCopyActivity
<a name="dp-object-hivecopyactivity"></a>

在 EMR 叢集上執行 Hive 查詢。 `HiveCopyActivity` 可讓您更輕鬆地在 DynamoDB 資料表之間複製資料。 `HiveCopyActivity`接受 HiveQL 陳述式，以在資料欄和資料列層級篩選來自 DynamoDB 的輸入資料。

## 範例
<a name="hivecopyactivity-example"></a>

以下範例會示範如何使用 `HiveCopyActivity` 和 `DynamoDBExportDataFormat` 來將資料從一個 `DynamoDBDataNode` 複製到另一個，同時根據時間戳記來篩選資料。

```
{
  "objects": [
    {
      "id" : "DataFormat.1",
      "name" : "DataFormat.1",
      "type" : "DynamoDBExportDataFormat",
      "column" : "timeStamp BIGINT"
    },
    {
      "id" : "DataFormat.2",
      "name" : "DataFormat.2",
      "type" : "DynamoDBExportDataFormat"
    },
    {
      "id" : "DynamoDBDataNode.1",
      "name" : "DynamoDBDataNode.1",
      "type" : "DynamoDBDataNode",
      "tableName" : "item_mapped_table_restore_temp",
      "schedule" : { "ref" : "ResourcePeriod" },
      "dataFormat" : { "ref" : "DataFormat.1" }
    },
    {
      "id" : "DynamoDBDataNode.2",
      "name" : "DynamoDBDataNode.2",
      "type" : "DynamoDBDataNode",
      "tableName" : "restore_table",
      "region" : "us_west_1",
      "schedule" : { "ref" : "ResourcePeriod" },
      "dataFormat" : { "ref" : "DataFormat.2" }
    },
    {
      "id" : "EmrCluster.1",
      "name" : "EmrCluster.1",
      "type" : "EmrCluster",
      "schedule" : { "ref" : "ResourcePeriod" },
      "masterInstanceType" : "m1.xlarge",
      "coreInstanceCount" : "4"
    },
    {
      "id" : "HiveTransform.1",
      "name" : "Hive Copy Transform.1",
      "type" : "HiveCopyActivity",
      "input" : { "ref" : "DynamoDBDataNode.1" },
      "output" : { "ref" : "DynamoDBDataNode.2" },
      "schedule" :{ "ref" : "ResourcePeriod" },
      "runsOn" : { "ref" : "EmrCluster.1" },
      "filterSql" : "`timeStamp` > unix_timestamp(\"#{@scheduledStartTime}\", \"yyyy-MM-dd'T'HH:mm:ss\")"
    },
    {
      "id" : "ResourcePeriod",
      "name" : "ResourcePeriod",
      "type" : "Schedule",
      "period" : "1 Hour",
      "startDateTime" : "2013-06-04T00:00:00",
      "endDateTime" : "2013-06-04T01:00:00"
    }
  ]
}
```

## 語法
<a name="hivecopyactivity-syntax"></a>


****  

| 物件呼叫欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| schedule | 在排程間隔的執行期間會呼叫此物件。使用者必須指定另一個物件的排程參考，設定此物件的相依性執行順序。使用者可以明確設定物件的排程以滿足這項需求，例如，指定 "schedule": \$1"ref": "DefaultSchedule"\$1。在大部分的情況下，建議您將排程參考放在預設的管道物件，讓所有物件都繼承該排程。或者，如果管道有排程的樹狀目錄 (主排程內還有排程)，使用者可以建立有排程參考的父物件。如需範例選用排程組態的詳細資訊，請參閱[https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html)。 | 參考物件，例如 "schedule":\$1"ref":"myScheduleId"\$1 | 

 


****  

| 必要的群組 (下列其中之一為必要) | Description | 槽類型 | 
| --- | --- | --- | 
| runsOn | 指定要在其中執行的叢集。 | 參考物件，例如 "runsOn":\$1"ref":"myResourceId"\$1 | 
| workerGroup | 工作者群組。這是用於路由任務。如果您提供 runsOn 值，且 workerGroup 存在，則會忽略 workerGroup。 | String | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| attemptStatus | 遠端活動最新回報的狀態。 | String | 
| attemptTimeout | 遠端工作完成的逾時。如果設定，則系統可能會重試未在設定開始時間內完成的遠端活動。 | Period | 
| dependsOn | 指定與其他可執行物件的相依性。 | 參考物件，例如 "dependsOn":\$1"ref":"myActivityId"\$1 | 
| failureAndRerunMode | 描述相依性故障或重新執行時的消費者節點行為。 | 列舉 | 
| filterSql | Hive SQL 陳述式片段，可篩選要複製的 DynamoDB 或 Amazon S3 資料子集。篩選條件應該只包含述詞，而不是以WHERE子句開頭，因為 會自動 AWS Data Pipeline 新增它。 | String | 
| input | 輸入資料來源。此必須為 S3DataNode 或 DynamoDBDataNode。如果您使用 DynamoDBNode，請指定 DynamoDBExportDataFormat。 | 參考物件，例如 "input":\$1"ref":"myDataNodeId"\$1 | 
| lateAfterTimeout | 物件必須完成的管道啟動後經過的時間。只有在排程類型未設定為 時，才會觸發它ondemand。 | Period | 
| maxActiveInstances | 同時作用中的元件執行個體數目上限。重新執行不計入作用中的執行個體數量。 | Integer | 
| maximumRetries | 故障時嘗試重試的次數上限。 | Integer | 
| onFail | 目前物件發生故障時要執行的動作。 | 參考物件，例如 "onFail":\$1"ref":"myActionId"\$1 | 
| onLateAction | 某個物件尚未排程或仍未完成時，應該觸發的動作。 | 參考物件，例如 "onLateAction":\$1"ref":"myActionId"\$1 | 
| onSuccess | 目前物件成功時要執行的動作。 | 參考物件，例如 "onSuccess":\$1"ref":"myActionId"\$1 | 
| output | 輸出資料來源。如果輸入是 S3DataNode，這必須為 DynamoDBDataNode。否則，此項目可以是 S3DataNode 或 DynamoDBDataNode。如果您使用 DynamoDBNode，請指定 DynamoDBExportDataFormat。 | 參考物件，例如 "output":\$1"ref":"myDataNodeId"\$1 | 
| parent | 目前物件的父系，其槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 
| pipelineLogUri | 用於上傳管道日誌的 Amazon S3 URI 's3://BucketName/Key/'，例如 。 | String | 
| postActivityTaskConfig | 要執行的活動後組態指令碼。這包含 Amazon S3 中的 shell 指令碼 URI 和引數清單。 | 參考物件，例如 "postActivityTaskConfig":\$1"ref":"myShellScriptConfigId"\$1 | 
| preActivityTaskConfig | 要執行的活動前組態指令碼。這包含 Amazon S3 中的 shell 指令碼 URI 和引數清單。 | 參考物件，例如 "preActivityTaskConfig":\$1"ref":"myShellScriptConfigId"\$1 | 
| precondition | 可選擇性定義先決條件。在所有先決條件滿足前，資料節點不會標示為"READY"。 | 參考物件，例如 "precondition":\$1"ref":"myPreconditionId"\$1 | 
| reportProgressTimeout | 遠端工作連續呼叫 reportProgress 的逾時。如果設定，則不回報指定時段進度的遠端活動，可能會視為已停滯而重試。 | Period | 
| resizeClusterBeforeRunning | 在執行此活動之前調整叢集的大小，以容納指定為輸入或輸出的 DynamoDB 資料節點。 如果您的活動使用 `DynamoDBDataNode`做為輸入或輸出資料節點，而且如果您`resizeClusterBeforeRunning`將 設定為 `TRUE`，則 會使用`m3.xlarge`執行個體類型 AWS Data Pipeline 開始。這會將您選擇的執行個體類型覆寫為 `m3.xlarge`，可能會增加您的每月成本。  | Boolean | 
| resizeClusterMaxInstances | 調整大小演算法可請求的執行個體數目上限 | Integer | 
| retryDelay | 兩次重試嘗試之間的逾時持續時間。 | Period | 
| scheduleType | 排程類型可讓您指定管道定義的物件應該排程在間隔開頭還是間隔結尾。時間序列樣式排程表示執行個體排程在每個間隔的結尾，而 Cron 樣式排程表示執行個體排程在每個間隔的開頭。隨需排程可讓您在每次啟用時執行一次管道。這表示您不必複製或重新建立管道，然後再執行一次。若您使用隨需排程，則必須在預設物件中指定此排程，且其必須是針對管道中物件指定的唯一 scheduleType。若要使用隨需管道，您只要針對每次後續執行呼叫 ActivatePipeline 操作即可。值為：Cron、ondemand 和 timeseries。 | 列舉 | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @activeInstances | 目前已排程的作用中執行個體物件清單。 | 參考物件，例如 "activeInstances":\$1"ref":"myRunnableObjectId"\$1 | 
| @actualEndTime | 此物件執行完成的時間。 | DateTime | 
| @actualStartTime | 此物件執行開始的時間。 | DateTime | 
| cancellationReason | 若此物件已取消，會提供 cancellationReason。 | String | 
| @cascadeFailedOn | 物件失敗所在的相依鏈的描述。 | 參考物件，例如 "cascadeFailedOn":\$1"ref":"myRunnableObjectId"\$1 | 
| emrStepLog | Amazon EMR 步驟日誌僅適用於 EMR 活動嘗試。 | String | 
| errorId | 若此物件失敗，會提供 errorId。 | String | 
| errorMessage | 若此物件失敗，會提供 errorMessage。 | String | 
| errorStackTrace | 如果此物件失敗，則為錯誤堆疊追蹤。 | String | 
| @finishedTime | 此物件完成其執行的時間。 | DateTime | 
| hadoopJobLog | 嘗試 EMR 型活動可用的 Hadoop 任務日誌。 | String | 
| @healthStatus | 反映已達終止狀態之最後一個物件執行個體成功或失敗的物件運作狀態。 | String | 
| @healthStatusFromInstanceId | 已達終止狀態之最後一個執行個體物件的 ID。 | String | 
| @healthStatusUpdatedTime | 上次更新運作狀態的時間。 | DateTime | 
| hostname | 選取任務嘗試之用戶端的主機名稱。 | String | 
| @lastDeactivatedTime | 此物件最後停用的時間。 | DateTime | 
| @latestCompletedRunTime | 執行完成最近一次執行的時間。 | DateTime | 
| @latestRunTime | 執行排程最近一次執行的時間。 | DateTime | 
| @nextRunTime | 下次要排程執行的時間。 | DateTime | 
| reportProgressTime | 遠端活動最近報告進度的時間。 | DateTime | 
| @scheduledEndTime | 物件的排程結束時間。 | DateTime | 
| @scheduledStartTime | 物件的排程開始時間。 | DateTime | 
| @status | 此物件的狀態。 | String | 
| @version | 建立物件使用的管道版本。 | String | 
| @waitingOn | 此物件等待之相依性清單的描述。 | 參考物件，例如 "waitingOn":\$1"ref":"myRunnableObjectId"\$1 | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤。 | String | 
| @pipelineId | 此物件所屬管道的 ID。 | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件。 | String | 

## 另請參閱
<a name="hivecopyactivity-seealso"></a>
+ [ShellCommandActivity](dp-object-shellcommandactivity.md)
+ [EmrActivity](dp-object-emractivity.md)

# PigActivity
<a name="dp-object-pigactivity"></a>

PigActivity 在 中為 Pig 指令碼提供原生支援， AWS Data Pipeline 無需使用 `ShellCommandActivity`或 `EmrActivity`。此外，PigActivity 支援資料預備。當預備欄位設為 True 時， AWS Data Pipeline 會將輸入資料做為 Pig 中的結構描述預備，而無須使用者輸入額外的程式碼。

## 範例
<a name="pigactivity-example"></a>

以下範例管道示範如何使用 `PigActivity`。範例管道會執行下列步驟：
+ MyPigActivity1 從 Amazon S3 載入資料，並執行 Pig 指令碼，以選取幾欄資料並將其上傳至 Amazon S3。
+ MyPigActivity2 會載入第一個輸出、選取幾欄和三列資料，並將其上傳到 Amazon S3 做為第二個輸出。
+ MyPigActivity3 會載入第二個輸出資料、將兩列資料插入 Amazon RDS，以及僅將名為 "fifth" 的資料欄插入 Amazon RDS。
+ MyPigActivity4 會載入 Amazon RDS 資料、選取第一列資料，並將其上傳至 Amazon S3。

```
{
  "objects": [
    {
      "id": "MyInputData1",
      "schedule": {
        "ref": "MyEmrResourcePeriod"
      },
      "directoryPath": "s3://amzn-s3-demo-bucket/pigTestInput",
      "name": "MyInputData1",
      "dataFormat": {
        "ref": "MyInputDataType1"
      },
      "type": "S3DataNode"
    },
    {
      "id": "MyPigActivity4",
      "scheduleType": "CRON",
      "schedule": {
        "ref": "MyEmrResourcePeriod"
      },
      "input": {
        "ref": "MyOutputData3"
      },
      "pipelineLogUri": "s3://amzn-s3-demo-bucket/path/",
      "name": "MyPigActivity4",
      "runsOn": {
        "ref": "MyEmrResource"
      },
      "type": "PigActivity",
      "dependsOn": {
        "ref": "MyPigActivity3"
      },
      "output": {
        "ref": "MyOutputData4"
      },
      "script": "B = LIMIT ${input1} 1; ${output1} = FOREACH B GENERATE one;",
      "stage": "true"
    },
    {
      "id": "MyPigActivity3",
      "scheduleType": "CRON",
      "schedule": {
        "ref": "MyEmrResourcePeriod"
      },
      "input": {
        "ref": "MyOutputData2"
      },
      "pipelineLogUri": "s3://amzn-s3-demo-bucket/path",
      "name": "MyPigActivity3",
      "runsOn": {
        "ref": "MyEmrResource"
      },
      "script": "B = LIMIT ${input1} 2; ${output1} = FOREACH B GENERATE Fifth;",
      "type": "PigActivity",
      "dependsOn": {
        "ref": "MyPigActivity2"
      },
      "output": {
        "ref": "MyOutputData3"
      },
      "stage": "true"
    },
    {
      "id": "MyOutputData2",
      "schedule": {
        "ref": "MyEmrResourcePeriod"
      },
      "name": "MyOutputData2",
      "directoryPath": "s3://amzn-s3-demo-bucket/PigActivityOutput2",
      "dataFormat": {
        "ref": "MyOutputDataType2"
      },
      "type": "S3DataNode"
    },
    {
      "id": "MyOutputData1",
      "schedule": {
        "ref": "MyEmrResourcePeriod"
      },
      "name": "MyOutputData1",
      "directoryPath": "s3://amzn-s3-demo-bucket/PigActivityOutput1",
      "dataFormat": {
        "ref": "MyOutputDataType1"
      },
      "type": "S3DataNode"
    },
    {
      "id": "MyInputDataType1",
      "name": "MyInputDataType1",
      "column": [
        "First STRING",
        "Second STRING",
        "Third STRING",
        "Fourth STRING",
        "Fifth STRING",
        "Sixth STRING",
        "Seventh STRING",
        "Eighth STRING",
        "Ninth STRING",
        "Tenth STRING"
      ],
      "inputRegEx": "^(\\\\S+) (\\\\S+) (\\\\S+) (\\\\S+) (\\\\S+) (\\\\S+) (\\\\S+) (\\\\S+) (\\\\S+) (\\\\S+)",
      "type": "RegEx"
    },
    {
      "id": "MyEmrResource",
      "region": "us-east-1",
      "schedule": {
        "ref": "MyEmrResourcePeriod"
      },
      "keyPair": "example-keypair",
      "masterInstanceType": "m1.small",
      "enableDebugging": "true",
      "name": "MyEmrResource",
      "actionOnTaskFailure": "continue",
      "type": "EmrCluster"
    },
    {
      "id": "MyOutputDataType4",
      "name": "MyOutputDataType4",
      "column": "one STRING",
      "type": "CSV"
    },
    {
      "id": "MyOutputData4",
      "schedule": {
        "ref": "MyEmrResourcePeriod"
      },
      "directoryPath": "s3://amzn-s3-demo-bucket/PigActivityOutput3",
      "name": "MyOutputData4",
      "dataFormat": {
        "ref": "MyOutputDataType4"
      },
      "type": "S3DataNode"
    },
    {
      "id": "MyOutputDataType1",
      "name": "MyOutputDataType1",
      "column": [
        "First STRING",
        "Second STRING",
        "Third STRING",
        "Fourth STRING",
        "Fifth STRING",
        "Sixth STRING",
        "Seventh STRING",
        "Eighth STRING"
      ],
      "columnSeparator": "*",
      "type": "Custom"
    },
    {
      "id": "MyOutputData3",
      "username": "___",
      "schedule": {
        "ref": "MyEmrResourcePeriod"
      },
      "insertQuery": "insert into #{table} (one) values (?)",
      "name": "MyOutputData3",
      "*password": "___",
      "runsOn": {
        "ref": "MyEmrResource"
      },
      "connectionString": "jdbc:mysql://example-database-instance:3306/example-database",
      "selectQuery": "select * from #{table}",
      "table": "example-table-name",
      "type": "MySqlDataNode"
    },
    {
      "id": "MyOutputDataType2",
      "name": "MyOutputDataType2",
      "column": [
        "Third STRING",
        "Fourth STRING",
        "Fifth STRING",
        "Sixth STRING",
        "Seventh STRING",
        "Eighth STRING"
      ],
      "type": "TSV"
    },
    {
      "id": "MyPigActivity2",
      "scheduleType": "CRON",
      "schedule": {
        "ref": "MyEmrResourcePeriod"
      },
      "input": {
        "ref": "MyOutputData1"
      },
      "pipelineLogUri": "s3://amzn-s3-demo-bucket/path",
      "name": "MyPigActivity2",
      "runsOn": {
        "ref": "MyEmrResource"
      },
      "dependsOn": {
        "ref": "MyPigActivity1"
      },
      "type": "PigActivity",
      "script": "B = LIMIT ${input1} 3; ${output1} = FOREACH B GENERATE Third, Fourth, Fifth, Sixth, Seventh, Eighth;",
      "output": {
        "ref": "MyOutputData2"
      },
      "stage": "true"
    },
    {
      "id": "MyEmrResourcePeriod",
      "startDateTime": "2013-05-20T00:00:00",
      "name": "MyEmrResourcePeriod",
      "period": "1 day",
      "type": "Schedule",
      "endDateTime": "2013-05-21T00:00:00"
    },
    {
      "id": "MyPigActivity1",
      "scheduleType": "CRON",
      "schedule": {
        "ref": "MyEmrResourcePeriod"
      },
      "input": {
        "ref": "MyInputData1"
      },
      "pipelineLogUri": "s3://amzn-s3-demo-bucket/path",
      "scriptUri": "s3://amzn-s3-demo-bucket/script/pigTestScipt.q",
      "name": "MyPigActivity1",
      "runsOn": {
        "ref": "MyEmrResource"
      },
      "scriptVariable": [
        "column1=First",
        "column2=Second",
        "three=3"
      ],
      "type": "PigActivity",
      "output": {
        "ref": "MyOutputData1"
      },
      "stage": "true"
    }
  ]
}
```

`pigTestScript.q` 的內容如下所示。

```
B = LIMIT ${input1} $three; ${output1} = FOREACH B GENERATE $column1, $column2, Third, Fourth, Fifth, Sixth, Seventh, Eighth;
```

## 語法
<a name="pigactivity-syntax"></a>


****  

| 物件呼叫欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| schedule | 在排程間隔的執行期間會呼叫此物件。使用者必須指定另一個物件的排程參考，設定此物件的相依性執行順序。使用者可以明確設定物件的排程以滿足這項需求，例如，指定 "schedule": \$1"ref": "DefaultSchedule"\$1。在大部分的情況下，建議您將排程參考放在預設的管道物件，讓所有物件都繼承該排程。或者，如果管道有排程的樹狀目錄 (主排程內還有排程)，使用者可以建立有排程參考的父物件。如需範例選用排程組態的詳細資訊，請參閱[https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html)。 | 參考物件，例如 "schedule":\$1"ref":"myScheduleId"\$1 | 

 


****  

| 必要的群組 (下列其中之一為必要) | Description | 槽類型 | 
| --- | --- | --- | 
| script | 要執行的 Pig 指令碼。 | String | 
| scriptUri | 要執行 Pig 指令碼的位置 (例如 s3://scriptLocation)。 | String | 

 


****  

| 必要的群組 (下列其中之一為必要) | Description | 槽類型 | 
| --- | --- | --- | 
| runsOn | 要在其中執行此 PigActivity 的 EMR 叢集。 | 參考物件，例如 "runsOn":\$1"ref":"myEmrClusterId"\$1 | 
| workerGroup | 工作者群組。這是用於路由任務。如果您提供 runsOn 值，且 workerGroup 存在，則會忽略 workerGroup。 | String | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| attemptStatus | 遠端活動最新回報的狀態。 | String | 
| attemptTimeout | 遠端工作完成的逾時。如果設定，則系統可能會重試未在設定開始時間內完成的遠端活動。 | Period | 
| dependsOn | 指定與其他可執行物件的相依性。 | 參考物件，例如 "dependsOn":\$1"ref":"myActivityId"\$1 | 
| failureAndRerunMode | 描述相依性故障或重新執行時的消費者節點行為。 | 列舉 | 
| input | 輸入資料來源。 | 參考物件，例如 "input":\$1"ref":"myDataNodeId"\$1 | 
| lateAfterTimeout | 物件必須完成的管道啟動後經過的時間。只有在排程類型未設定為 時，才會觸發它ondemand。 | Period | 
| maxActiveInstances | 同時作用中的元件執行個體數目上限。重新執行不計入作用中的執行個體數量。 | Integer | 
| maximumRetries | 故障時嘗試重試的次數上限。 | Integer | 
| onFail | 目前物件發生故障時要執行的動作。 | 參考物件，例如 "onFail":\$1"ref":"myActionId"\$1 | 
| onLateAction | 某個物件尚未排程或仍未完成時，應該觸發的動作。 | 參考物件，例如 "onLateAction":\$1"ref":"myActionId"\$1 | 
| onSuccess | 目前物件成功時要執行的動作。 | 參考物件，例如 "onSuccess":\$1"ref":"myActionId"\$1 | 
| output | 輸出資料來源。 | 參考物件，例如 "output":\$1"ref":"myDataNodeId"\$1 | 
| parent | 目前物件的父系，其插槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 
| pipelineLogUri | 用於上傳管道日誌的 Amazon S3 URI （例如 's3：//BucketName/Key/')。 | String | 
| postActivityTaskConfig | 要執行的活動後組態指令碼。這包含 Amazon S33 中 shell 指令碼的 URI 和引數清單。 | 參考物件，例如 "postActivityTaskConfig":\$1"ref":"myShellScriptConfigId"\$1 | 
| preActivityTaskConfig | 要執行的活動前組態指令碼。這包含 Amazon S3 中的 shell 指令碼 URI 和引數清單。 | 參考物件，例如 "preActivityTaskConfig":\$1"ref":"myShellScriptConfigId"\$1 | 
| precondition | 選擇是否定義先決條件。在所有先決條件滿足前，資料節點不會標示為"READY"。 | 參考物件，例如 "precondition":\$1"ref":"myPreconditionId"\$1 | 
| reportProgressTimeout | 遠端工作連續呼叫 reportProgress 的逾時。如果設定，則不回報指定時段進度的遠端活動，可能會視為已停滯而重試。 | Period | 
| resizeClusterBeforeRunning | 在執行此活動之前調整叢集的大小，以容納指定為輸入或輸出的 DynamoDB 資料節點。 如果您的活動使用 `DynamoDBDataNode`做為輸入或輸出資料節點，而且如果您`resizeClusterBeforeRunning`將 設定為 `TRUE`，則 會使用`m3.xlarge`執行個體類型 AWS Data Pipeline 開始。這會將您選擇的執行個體類型覆寫為 `m3.xlarge`，可能會增加您的每月成本。  | Boolean | 
| resizeClusterMaxInstances | 調整大小演算法可請求的執行個體數目上限。 | Integer | 
| retryDelay | 兩次重試嘗試之間的逾時持續時間。 | Period | 
| scheduleType | 排程類型可讓您指定管道定義的物件應該排程在間隔開頭還是間隔結尾。時間序列樣式排程表示執行個體排程在每個間隔的結尾，而 Cron 樣式排程表示執行個體排程在每個間隔的開頭。隨需排程可讓您在每次啟用時執行一次管道。這表示您不必複製或重新建立管道，然後再執行一次。若您使用隨需排程，則必須在預設物件中指定此排程，且其必須是針對管道中物件指定的唯一 scheduleType。若要使用隨需管道，您只要針對每次後續執行呼叫 ActivatePipeline 操作即可。值為：Cron、ondemand 和 timeseries。 | 列舉 | 
| scriptVariable | 要傳遞給 Pig 指令碼的引數。您可以搭配使用 scriptVariable 和 script 或 scriptUri。 | String | 
| stage | 決定是否啟用接移，並讓您的 Pig 指令碼存取暫存資料的資料表，例如 \$1\$1INPUT1\$1 和 \$1\$1OUTPUT1\$1。 | Boolean | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @activeInstances | 目前已排程的作用中執行個體物件清單。 | 參考物件，例如 "activeInstances":\$1"ref":"myRunnableObjectId"\$1 | 
| @actualEndTime | 此物件執行完成的時間。 | DateTime | 
| @actualStartTime | 此物件執行開始的時間。 | DateTime | 
| cancellationReason | 若此物件已取消，會提供 cancellationReason。 | String | 
| @cascadeFailedOn | 物件失敗所在的相依鏈的描述。 | 參考物件，例如 "cascadeFailedOn":\$1"ref":"myRunnableObjectId"\$1 | 
| emrStepLog | Amazon EMR 步驟日誌僅適用於 EMR 活動嘗試。 | String | 
| errorId | 若此物件失敗，會提供 errorId。 | String | 
| errorMessage | 若此物件失敗，會提供 errorMessage。 | String | 
| errorStackTrace | 如果此物件失敗，則為錯誤堆疊追蹤。 | String | 
| @finishedTime | 此物件完成其執行的時間。 | DateTime | 
| hadoopJobLog | 嘗試 EMR 型活動可用的 Hadoop 任務日誌。 | String | 
| @healthStatus | 反映已達終止狀態之最後一個物件執行個體成功或失敗的物件運作狀態。 | String | 
| @healthStatusFromInstanceId | 已達終止狀態之最後一個執行個體物件的 ID。 | String | 
| @healthStatusUpdatedTime | 上次更新運作狀態的時間。 | DateTime | 
| hostname | 選取任務嘗試之用戶端的主機名稱。 | String | 
| @lastDeactivatedTime | 此物件最後停用的時間。 | DateTime | 
| @latestCompletedRunTime | 執行完成最近一次執行的時間。 | DateTime | 
| @latestRunTime | 執行排程最近一次執行的時間。 | DateTime | 
| @nextRunTime | 下次要排程執行的時間。 | DateTime | 
| reportProgressTime | 遠端活動最近報告進度的時間。 | DateTime | 
| @scheduledEndTime | 物件的排程結束時間。 | DateTime | 
| @scheduledStartTime | 物件的排程開始時間。 | DateTime | 
| @status | 此物件的狀態。 | String | 
| @version | 建立物件時使用的管道版本。 | String | 
| @waitingOn | 此物件等待之相依性清單的描述。 | 參考物件，例如 "waitingOn":\$1"ref":"myRunnableObjectId"\$1 | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤。 | String | 
| @pipelineId | 此物件所屬管道的 ID。 | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件。 | String | 

## 另請參閱
<a name="pigactivity-seealso"></a>
+ [ShellCommandActivity](dp-object-shellcommandactivity.md)
+ [EmrActivity](dp-object-emractivity.md)

# RedshiftCopyActivity
<a name="dp-object-redshiftcopyactivity"></a>

將資料從 DynamoDB 或 Amazon S3 複製到 Amazon Redshift。您可以將資料載入新的資料表，或是輕鬆地將資料併入現有資料表。

以下是使用 `RedshiftCopyActivity` 的使用案例概觀：

1. 首先使用 AWS Data Pipeline 在 Amazon S3 中暫存您的資料。

1. 使用 將資料從 Amazon RDS 和 Amazon EMR `RedshiftCopyActivity`移至 Amazon Redshift。

   這可讓您將資料載入 Amazon Redshift，以便進行分析。

1. 使用 [SqlActivity](dp-object-sqlactivity.md)對已載入 Amazon Redshift 的資料執行 SQL 查詢。

 此外，`RedshiftCopyActivity` 可讓您使用 `S3DataNode`，因為它支援資訊清單檔案。如需詳細資訊，請參閱[S3DataNode](dp-object-s3datanode.md)。

## 範例
<a name="redshiftcopyactivity-example"></a>

以下為此物件類型的範例。

為了確保格式轉換，此範例使用 中的 [EMPTYASNULL](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-conversion.html#copy-emptyasnull) 和 [IGNOREBLANKLINES](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-conversion.html#copy-ignoreblanklines) 特殊轉換參數`commandOptions`。如需詳細資訊，請參閱《*Amazon Redshift 資料庫開發人員指南*》中的[資料轉換參數](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-conversion.html)。

```
{
  "id" : "S3ToRedshiftCopyActivity",
  "type" : "RedshiftCopyActivity",
  "input" : { "ref": "MyS3DataNode" },
  "output" : { "ref": "MyRedshiftDataNode" },
  "insertMode" : "KEEP_EXISTING",
  "schedule" : { "ref": "Hour" },
  "runsOn" : { "ref": "MyEc2Resource" },
  "commandOptions": ["EMPTYASNULL", "IGNOREBLANKLINES"]
}
```

以下範例管道定義會顯示使用 `APPEND` 插入模式的活動：

```
{
  "objects": [
    {
      "id": "CSVId1",
      "name": "DefaultCSV1",
      "type": "CSV"
    },
    {
      "id": "RedshiftDatabaseId1",
      "databaseName": "dbname",
      "username": "user",
      "name": "DefaultRedshiftDatabase1",
      "*password": "password",
      "type": "RedshiftDatabase",
      "clusterId": "redshiftclusterId"
    },
    {
      "id": "Default",
      "scheduleType": "timeseries",
      "failureAndRerunMode": "CASCADE",
      "name": "Default",
      "role": "DataPipelineDefaultRole",
      "resourceRole": "DataPipelineDefaultResourceRole"
    },
    {
      "id": "RedshiftDataNodeId1",
      "schedule": {
        "ref": "ScheduleId1"
      },
      "tableName": "orders",
      "name": "DefaultRedshiftDataNode1",
      "createTableSql": "create table StructuredLogs (requestBeginTime CHAR(30) PRIMARY KEY DISTKEY SORTKEY, requestEndTime CHAR(30), hostname CHAR(100), requestDate varchar(20));",
      "type": "RedshiftDataNode",
      "database": {
        "ref": "RedshiftDatabaseId1"
      }
    },
    {
      "id": "Ec2ResourceId1",
      "schedule": {
        "ref": "ScheduleId1"
      },
      "securityGroups": "MySecurityGroup",
      "name": "DefaultEc2Resource1",
      "role": "DataPipelineDefaultRole",
      "logUri": "s3://myLogs",
      "resourceRole": "DataPipelineDefaultResourceRole",
      "type": "Ec2Resource"
    },
    {
      "id": "ScheduleId1",
      "startDateTime": "yyyy-mm-ddT00:00:00",
      "name": "DefaultSchedule1",
      "type": "Schedule",
      "period": "period",
      "endDateTime": "yyyy-mm-ddT00:00:00"
    },
    {
      "id": "S3DataNodeId1",
      "schedule": {
        "ref": "ScheduleId1"
      },
      "filePath": "s3://datapipeline-us-east-1/samples/hive-ads-samples.csv",
      "name": "DefaultS3DataNode1",
      "dataFormat": {
        "ref": "CSVId1"
      },
      "type": "S3DataNode"
    },
    {
      "id": "RedshiftCopyActivityId1",
      "input": {
        "ref": "S3DataNodeId1"
      },
      "schedule": {
        "ref": "ScheduleId1"
      },
      "insertMode": "APPEND",
      "name": "DefaultRedshiftCopyActivity1",
      "runsOn": {
        "ref": "Ec2ResourceId1"
      },
      "type": "RedshiftCopyActivity",
      "output": {
        "ref": "RedshiftDataNodeId1"
      }
    }
  ]
}
```

`APPEND` 操作會將項目新增到資料表，無論其主索引鍵或排序索引鍵為何。例如，若您有以下資料表，您可以使用相同的 ID 和使用者值附加記錄。

```
ID(PK)     USER
1          aaa
2          bbb
```

您可以使用相同的 ID 和使用者值附加記錄：

```
ID(PK)     USER
1          aaa
2          bbb
1          aaa
```

**注意**  
若 `APPEND` 操作遭到插斷並進行重試，其導致的重新執行管道可能會從開頭附加。這可能會造成進一步的重複，因此建議您留意此行為，特別是在您擁有任何計算資料列數量的邏輯時。

如需教學，請參閱[使用 將資料複製到 Amazon Redshift AWS Data Pipeline](dp-copydata-redshift.md)。

## 語法
<a name="redshiftcopyactivity-syntax"></a>


****  

| 必要欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| insertMode |   決定 AWS Data Pipeline 如何處理目標資料表中與要載入資料中的資料列重疊的預先存在資料。 有效值為：`KEEP_EXISTING`、`OVERWRITE_EXISTING`、`TRUNCATE` 和 `APPEND`。 `KEEP_EXISTING` 會將新列新增至資料表，並保持任何現有列不變。 `KEEP_EXISTING` 和 ` OVERWRITE_EXISTING` 使用主索引鍵、排序索引鍵和分發索引鍵，以識別出哪些傳入的列與現有列匹配。請參閱《Amazon Redshift *資料庫開發人員指南*》中的[更新和插入新資料](https://docs.aws.amazon.com/redshift/latest/dg/t_updating-inserting-using-staging-tables-.html)。 `TRUNCATE` 會刪除目的地資料表中的所有資料，再寫入新資料。  `APPEND` 會將所有記錄新增至 Redshift 資料表結尾。 `APPEND` 不需要主索引鍵、分發索引鍵或排序索引鍵，因此可能會附加可能重複的項目。  | 列舉 | 

 


****  

| 物件呼叫欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| schedule |  在排程間隔的執行期間會呼叫此物件。 指定其他物件的排程參考，以設定此物件的相依性執行順序。 在大部分的情況下，建議將排程參考放在預設的管道物件，讓所有物件都繼承該排程。例如，您可以指定 `"schedule": {"ref": "DefaultSchedule"}` 在物件上明確設定排程。 如果管道中的主排程包含巢狀排程，請建立具有排程參考的父物件。 如需範例選用排程組態的詳細資訊，請參閱[排程](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html)。  | 參考物件，例如： "schedule":\$1"ref":"myScheduleId"\$1 | 

 


****  

| 必要的群組 (下列其中之一為必要) | Description | 槽類型 | 
| --- | --- | --- | 
| runsOn | 執行活動或命令的可運算資源。例如，Amazon EC2 執行個體或 Amazon EMR 叢集。 | 參考物件，例如 "runsOn":\$1"ref":"myResourceId"\$1 | 
| workerGroup | 工作者群組。這是用於路由任務。如果您提供 runsOn 值，且 workerGroup 存在，則會忽略 workerGroup。 | String | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| attemptStatus | 遠端活動最新回報的狀態。 | String | 
| attemptTimeout | 遠端工作完成的逾時。如果設定，則系統可能會重試未在設定開始時間內完成的遠端活動。 | Period | 
| commandOptions |  接受參數以在`COPY`操作期間傳遞至 Amazon Redshift 資料節點。如需參數的資訊，請參閱《Amazon Redshift *資料庫開發人員指南*》中的 [COPY](https://docs.aws.amazon.com/redshift/latest/dg/r_COPY.html)。 `COPY` 載入資料表時，會嘗試隱含地將來源資料中的字串轉換為目標欄的資料類型。除了自動進行的預設資料轉換之外，如果您收到錯誤或有其他轉換需求，您也可以指定其他轉換參數。如需詳細資訊，請參閱《Amazon Redshift *資料庫開發人員指南*》中的[資料轉換參數](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-conversion.html)。 如果資料格式與輸入或輸出資料節點相關聯，則會忽略提供的參數。 由於複製操作會先使用 `COPY` 將資料插入臨時資料表中，然後使用 `INSERT` 命令將資料從臨時資料表複製到目的地資料表，因此某些 `COPY` 參數會不適用，例如 `COPY` 命令啟用資料表自動壓縮的功能。如果壓縮為必要，請將欄編碼詳細資訊新增至 `CREATE TABLE` 陳述式。 此外，在某些情況下，當需要從 Amazon Redshift 叢集卸載資料並在 Amazon S3 中建立檔案時， `RedshiftCopyActivity`依賴 Amazon Redshift `UNLOAD`的操作。 若要在複製和卸載期間改善效能，請從 `UNLOAD` 命令指定 `PARALLEL OFF` 參數。如需參數的資訊，請參閱《Amazon Redshift *資料庫開發人員指南*》中的 [UNLOAD](https://docs.aws.amazon.com/redshift/latest/dg/r_UNLOAD.html)。  | String | 
| dependsOn | 指定與另一個可執行物件的相依性。 | 參考物件："dependsOn":\$1"ref":"myActivityId"\$1 | 
| failureAndRerunMode | 描述相依性故障或重新執行時的消費者節點行為 | 列舉 | 
| input | 輸入資料節點。資料來源可以是 Amazon S3、DynamoDB 或 Amazon Redshift。 | 參考物件： "input":\$1"ref":"myDataNodeId"\$1 | 
| lateAfterTimeout | 物件必須完成的管道啟動後經過的時間。只有在排程類型未設定為 時，才會觸發它ondemand。 | Period | 
| maxActiveInstances | 同時作用中的元件執行個體數目上限。重新執行不計入作用中的執行個體數量。 | Integer | 
| maximumRetries | 故障時嘗試重試的次數上限 | Integer | 
| onFail | 目前物件發生故障時要執行的動作。 | 參考物件："onFail":\$1"ref":"myActionId"\$1 | 
| onLateAction | 某個物件尚未排程或仍未完成時，應該觸發的動作。 | 參考物件： "onLateAction":\$1"ref":"myActionId"\$1 | 
| onSuccess | 目前物件成功時要執行的動作。 | 參考物件： "onSuccess":\$1"ref":"myActionId"\$1 | 
| output | 輸出資料節點。輸出位置可以是 Amazon S3 或 Amazon Redshift。 | 參考物件： "output":\$1"ref":"myDataNodeId"\$1 | 
| parent | 目前物件的父系，其插槽會被繼承。 | 參考物件："parent":\$1"ref":"myBaseObjectId"\$1 | 
| pipelineLogUri | 上傳管道日誌的 S3 URI (例如 's3://BucketName/Key/')。 | String | 
| precondition | 選擇是否定義先決條件。在所有先決條件滿足前，資料節點不會標示為"READY"。 | 參考物件："precondition":\$1"ref":"myPreconditionId"\$1 | 
| 佇列 |  對應至 Amazon Redshift 中的 `query_group `設定，可讓您根據並行活動在佇列中的置放來指派並排定其優先順序。 Amazon Redshift 會將同時連線數限制在 15。如需詳細資訊，請參閱《Amazon RDS *資料庫開發人員指南*》中的[將查詢指派給佇列](https://docs.aws.amazon.com/AmazonRDS/latest/DeveloperGuide/cm-c-executing-queries.html)。  | String | 
| reportProgressTimeout |  遠端工作連續呼叫 `reportProgress` 的逾時。 如果設定，則不回報指定時段進度的遠端活動，可能會視為已停滯而重試。  | Period | 
| retryDelay | 兩次重試嘗試之間的逾時持續時間。 | Period | 
| scheduleType |  允許您指定管道中物件的排程。值為：`cron`、`ondemand` 和 `timeseries`。 `timeseries` 排程表示執行個體會排程在每個間隔的結尾。 `Cron` 排程表示執行個體會排程在每個間隔的開頭。 `ondemand` 排程可讓您在每次啟用時執行一次管道。這表示您不必複製或重新建立管道，然後再執行一次。  若要使用 `ondemand` 管道，請針對每次後續執行呼叫 `ActivatePipeline` 操作。 若您使用 `ondemand` 排程，則必須在預設物件中指定此排程，且其必須是針對管道中物件指定的唯一 `scheduleType`。  | 列舉 | 
| transformSql |  用於轉換輸入資料的 `SQL SELECT` 表達式。 在資料表執行名為 `staging` 的 `transformSql` 表達式。 當您從 DynamoDB 或 Amazon S3 複製資料時， AWS Data Pipeline 會建立名為「預備」的資料表，並最初載入其中的資料。此資料表中的資料用於更新目標資料表。 `transformSql` 的輸出結構描述，必須與最終目標表格的結構描述相符。 如果您指定 `transformSql` 選項，則會從指定的 SQL 陳述式建立第二個臨時資料表。然後，第二個臨時資料表中的資料會更新於最終目標資料表。  | String | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @activeInstances | 目前已排程的作用中執行個體物件清單。 | 參考物件："activeInstances":\$1"ref":"myRunnableObjectId"\$1 | 
| @actualEndTime | 此物件執行完成的時間。 | DateTime | 
| @actualStartTime | 此物件執行開始的時間。 | DateTime | 
| cancellationReason | 若此物件已取消，會提供 cancellationReason。 | String | 
| @cascadeFailedOn | 物件失敗所在的相依鏈的描述。 | 參考物件： "cascadeFailedOn":\$1"ref":"myRunnableObjectId"\$1 | 
| emrStepLog | 只在 EMR 活動嘗試時才可使用的 EMR 步驟日誌 | String | 
| errorId | 若此物件失敗，會提供 errorId。 | String | 
| errorMessage | 若此物件失敗，會提供 errorMessage。 | String | 
| errorStackTrace | 如果此物件失敗，則為錯誤堆疊追蹤。 | String | 
| @finishedTime | 此物件完成其執行的時間。 | DateTime | 
| hadoopJobLog | 嘗試 EMR 型活動可用的 Hadoop 任務日誌。 | String | 
| @healthStatus | 反映已達終止狀態之最後一個物件執行個體成功或失敗的物件運作狀態。 | String | 
| @healthStatusFromInstanceId | 已達終止狀態之最後一個執行個體物件的 ID。 | String | 
| @healthStatusUpdatedTime | 上次更新運作狀態的時間。 | DateTime | 
| hostname | 選取任務嘗試之用戶端的主機名稱。 | String | 
| @lastDeactivatedTime | 此物件最後停用的時間。 | DateTime | 
| @latestCompletedRunTime | 執行完成最近一次執行的時間。 | DateTime | 
| @latestRunTime | 執行排程最近一次執行的時間。 | DateTime | 
| @nextRunTime | 下次要排程執行的時間。 | DateTime | 
| reportProgressTime | 遠端活動最近報告進度的時間。 | DateTime | 
| @scheduledEndTime | 物件的排程結束時間。 | DateTime | 
| @scheduledStartTime | 物件的排程開始時間。 | DateTime | 
| @status | 此物件的狀態。 | String | 
| @version | 建立物件使用的管道版本。 | String | 
| @waitingOn | 此物件等待之相依性清單的描述。 | 參考物件： "waitingOn":\$1"ref":"myRunnableObjectId"\$1 | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤。 | String | 
| @pipelineId | 此物件所屬管道的 ID。 | String | 
| @sphere | 物件的球體。代表其在生命週期中的位置。例如，元件物件會引發執行個體物件，該物件會執行嘗試物件。 | String | 

# ShellCommandActivity
<a name="dp-object-shellcommandactivity"></a>

 執行命令或指令碼。您可以使用 `ShellCommandActivity` 來執行時間序列或與 Cron 相似的排程任務。

當 `stage` 欄位設定為 true 並與 搭配使用時`S3DataNode`， `ShellCommandActivity`支援預備資料的概念，這表示您可以將資料從 Amazon S3 移至階段位置，例如 Amazon EC2 或您的本機環境、使用指令碼和 對資料執行工作`ShellCommandActivity`，並將其移回 Amazon S3。

在這種情況下，當您的殼層命令連線到輸入 `S3DataNode` 時，您的殼層指令碼會使用 `${INPUT1_STAGING_DIR}`、`${INPUT2_STAGING_DIR}` 及其他欄位 (指向 `ShellCommandActivity` 輸入欄位) 在資料上直接運作。

同樣地，殼層命令的輸出可以暫存在輸出目錄中，以自動推送到 Amazon S3，由 `${OUTPUT1_STAGING_DIR}`、 `${OUTPUT2_STAGING_DIR}`等參考。

這些表達式可做為命令列引數傳遞到殼層命令，讓您在資料轉換邏輯中使用。

`ShellCommandActivity` 會傳回 Linux 形式的錯誤代碼及字串。若 `ShellCommandActivity` 導致錯誤，傳回的 `error` 會是非零的值。

## 範例
<a name="shellcommandactivity-example"></a>

以下為此物件類型的範例。

```
{
  "id" : "CreateDirectory",
  "type" : "ShellCommandActivity",
  "command" : "mkdir new-directory"
}
```

## 語法
<a name="shellcommandactivity-syntax"></a>


****  

| 物件呼叫欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| schedule |  在 `schedule` 間隔的執行期間會呼叫此物件。 若要設定此物件的相依性執行順序，請指定另一個物件的 `schedule` 參考。 若要滿足這項需求，請明確設定物件的 `schedule`，例如指定 `"schedule": {"ref": "DefaultSchedule"}`。 在大部分的情況下，建議您將 `schedule` 參考放在預設的管道物件，讓所有物件都繼承該排程。如果管道由排程的樹狀目錄 (主排程內還有排程) 組成，您可以建立含排程參考的父物件。 若要分散負載， 會稍微提前 AWS Data Pipeline 建立實體物件，但會按排程執行。 如需範例選用排程組態的詳細資訊，請參閱[https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html)。  | 參考物件，例如 "schedule":\$1"ref":"myScheduleId"\$1 | 

 


****  

| 必要的群組 (下列其中之一為必要) | Description | 槽類型 | 
| --- | --- | --- | 
| command | 要執行的命令。使用 \$1 參考位置參數，並使用 scriptArgument 指定命令的參數。此值和任何相關聯的參數，都必須在您執行任務執行器的環境中執行。 | String | 
| scriptUri | 要下載並以 shell 命令執行之檔案的 Amazon S3 URI 路徑。僅指定一個 scriptUri 或 command 欄位。scriptUri 無法使用參數，請改為使用 command。 | String | 

 


****  

| 必要的群組 (下列其中之一為必要) | Description | 槽類型 | 
| --- | --- | --- | 
| runsOn | 執行活動或命令的運算資源，例如 Amazon EC2 執行個體或 Amazon EMR 叢集。 | 參考物件，例如 "runsOn":\$1"ref":"myResourceId"\$1 | 
| workerGroup | 用於路由任務。如果您提供 runsOn 值，且 workerGroup 存在，則會忽略 workerGroup。 | String | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| attemptStatus | 遠端活動最新回報的狀態。 | String | 
| attemptTimeout | 遠端工作完成的逾時。如果設定，則未在指定開始時間內完成的遠端活動，可能會重試。 | Period | 
| dependsOn | 指定與其他可執行物件的相依性。 | 參考物件，例如 "dependsOn":\$1"ref":"myActivityId"\$1 | 
| failureAndRerunMode | 描述相依性故障或重新執行時的消費者節點行為。 | 列舉 | 
| input | 輸入資料的位置。 | 參考物件，例如 "input":\$1"ref":"myDataNodeId"\$1 | 
| lateAfterTimeout | 物件必須完成的管道啟動後經過的時間。只有在排程類型未設定為 時，才會觸發它ondemand。 | Period | 
| maxActiveInstances | 同時作用中的元件執行個體數目上限。重新執行不計入作用中的執行個體數量。 | Integer | 
| maximumRetries | 故障時嘗試重試的次數上限。 | Integer | 
| onFail | 目前物件發生故障時要執行的動作。 | 參考物件，例如 "onFail":\$1"ref":"myActionId"\$1 | 
| onLateAction | 某個物件尚未排程或尚未完成時，應該觸發的動作。 | 參考物件，例如 "onLateAction":\$1"ref":"myActionId"\$1 | 
| onSuccess | 目前物件成功時要執行的動作。 | 參考物件，例如 "onSuccess":\$1"ref":"myActionId"\$1 | 
| output | 輸出資料的位置。 | 參考物件，例如 "output":\$1"ref":"myDataNodeId"\$1 | 
| parent | 目前物件的父系，其槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 
| pipelineLogUri | Amazon S3 URI，例如's3://BucketName/Key/'用於上傳管道的日誌。 | String | 
| precondition | 可選擇性定義先決條件。在所有先決條件滿足前，資料節點不會標示為"READY"。 | 參考物件，例如 "precondition":\$1"ref":"myPreconditionId"\$1 | 
| reportProgressTimeout | 遠端活動連續呼叫 reportProgress 的逾時。如果設定，則系統可能會將未回報指定時段進度的遠端活動視為已停滯並重試。 | Period | 
| retryDelay | 兩次重試嘗試之間的逾時持續時間。 | Period | 
| scheduleType |  可讓您指定管道定義的物件應該排程在間隔開頭還是間隔結尾。 值為：`cron`、`ondemand` 和 `timeseries`。 如果設為 `timeseries`，則執行個體會排程在每個間隔的結尾。 如果設為 `Cron`，則執行個體會排程在每個間隔的開頭。 如果設為 `ondemand`，您可以每次啟用執行一次管道。這表示您不必複製或重新建立管道，然後再執行一次。若您使用 `ondemand` 排程，則必須在預設物件中指定此排程，且其必須是針對管道中物件指定的唯一 `scheduleType`。若要使用 `ondemand` 管道，請針對每次後續執行呼叫 `ActivatePipeline` 操作。  | 列舉 | 
| scriptArgument | JSON 格式的字串陣列，用於傳遞給由命令指定的命令。例如，如果命令為 echo \$11 \$12，請將 scriptArgument 指定為 "param1", "param2"。針對多個引數和參數，請依照下列所示來傳遞 scriptArgument： "scriptArgument":"arg1","scriptArgument":"param1","scriptArgument":"arg2","scriptArgument":"param2"。scriptArgument 只能與 command 一起使用；與 scriptUri 一起使用會造成錯誤。 | String | 
| stage | 決定是否啟用臨時功能，並讓您的 shell 命令存取臨時資料變數，例如 \$1\$1INPUT1\$1STAGING\$1DIR\$1 和  \$1\$1OUTPUT1\$1STAGING\$1DIR\$1。 | Boolean | 
| stderr |  路徑，可接收來自命令的重新導向系統錯誤訊息。如果您使用 runsOn 欄位，這必須是 Amazon S3 路徑，因為執行活動之資源的暫時性性質。不過，如果您指定 workerGroup 欄位，則允許使用本機檔案路徑。 | String | 
| stdout | 從 命令接收重新導向輸出的 Amazon S3 路徑。如果您使用 runsOn 欄位，這必須是 Amazon S3 路徑，因為執行活動之資源的暫時性性質。不過，如果您指定 workerGroup 欄位，則允許使用本機檔案路徑。 | String | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @activeInstances | 目前已排程的作用中執行個體物件清單。 | 參考物件，例如 "activeInstances":\$1"ref":"myRunnableObjectId"\$1 | 
| @actualEndTime | 此物件執行完成的時間。 | DateTime | 
| @actualStartTime | 此物件執行開始的時間。 | DateTime | 
| cancellationReason | 若此物件已取消，會提供 cancellationReason。 | String | 
| @cascadeFailedOn | 物件失敗所在之相依鏈的描述。 | 參考物件，例如 "cascadeFailedOn":\$1"ref":"myRunnableObjectId"\$1 | 
| emrStepLog | Amazon EMR 步驟日誌僅適用於 Amazon EMR 活動嘗試。 | String | 
| errorId | 若此物件失敗，會提供 errorId。 | String | 
| errorMessage | 若此物件失敗，會提供 errorMessage。 | String | 
| errorStackTrace | 如果此物件失敗，則為錯誤堆疊追蹤。 | String | 
| @finishedTime | 物件完成其執行的時間。 | DateTime | 
| hadoopJobLog | Amazon EMR 型活動的嘗試時，會提供 Hadoop 任務日誌。 | String | 
| @healthStatus | 反映已達終止狀態之最後一個物件執行個體成功或失敗的物件運作狀態。 | String | 
| @healthStatusFromInstanceId | 已達終止狀態之最後一個執行個體物件的 ID。 | String | 
| @healthStatusUpdatedTime | 上次更新運作狀態的時間。 | DateTime | 
| hostname | 選取任務嘗試之用戶端的主機名稱。 | String | 
| @lastDeactivatedTime | 此物件最後停用的時間。 | DateTime | 
| @latestCompletedRunTime | 執行完成最近一次執行的時間。 | DateTime | 
| @latestRunTime | 執行排程最近一次執行的時間。 | DateTime | 
| @nextRunTime | 下次要排程執行的時間。 | DateTime | 
| reportProgressTime | 遠端活動最近報告進度的時間。 | DateTime | 
| @scheduledEndTime | 物件的排程結束時間。 | DateTime | 
| @scheduledStartTime | 物件的排程開始時間。 | DateTime | 
| @status | 物件的狀態。 | String | 
| @version | 用來建立物件的 AWS Data Pipeline 版本。 | String | 
| @waitingOn | 此物件等待之相依性清單的描述。 | 參考物件，例如 "waitingOn":\$1"ref":"myRunnableObjectId"\$1 | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤。 | String | 
| @pipelineId | 此物件所屬管道的 ID。 | String | 
| @sphere | 物件在生命週期中的位置。元件物件引發執行個體物件，該物件會執行嘗試物件。 | String | 

## 另請參閱
<a name="shellcommandactivity-seealso"></a>
+ [CopyActivity](dp-object-copyactivity.md)
+ [EmrActivity](dp-object-emractivity.md)

# SqlActivity
<a name="dp-object-sqlactivity"></a>

在資料庫上執行 SQL 查詢 (指令碼)。

## 範例
<a name="sqlactivity-example"></a>

以下為此物件類型的範例。

```
{
  "id" : "MySqlActivity",
  "type" : "SqlActivity",
  "database" : { "ref": "MyDatabaseID" },
  "script" : "SQLQuery" | "scriptUri" : s3://scriptBucket/query.sql,
  "schedule" : { "ref": "MyScheduleID" },
}
```

## 語法
<a name="sqlactivity-syntax"></a>


****  

| 必要欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| 資料庫 | 要執行所提供 SQL 指令碼的資料庫。 | 參考物件，例如 "database":\$1"ref":"myDatabaseId"\$1 | 

 


****  

| 物件呼叫欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| schedule |  在排程間隔的執行期間會呼叫此物件。您必須指定另一個物件的排程參考，設定此物件的依存項目執行順序。您可以在物件上明確設定排程，例如指定 `"schedule": {"ref": "DefaultSchedule"}`。 在大部分的情況下，建議您將排程參考放在預設的管道物件，讓所有物件都繼承該排程。 若管道具有與主排程呈現巢狀結構的排程樹狀目錄，請建立具有排程參考的父物件。如需範例選用排程組態的詳細資訊，請參閱[https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html)。  | 參考物件，例如 "schedule":\$1"ref":"myScheduleId"\$1 | 

 


****  

| 必要的群組 (下列其中之一為必要) | Description | 槽類型 | 
| --- | --- | --- | 
| script | 要執行的 SQL 指令碼。您必須指定 script 或 scriptUri。當指令碼存放在 Amazon S3 中時，指令碼不會評估為表達式。當指令碼存放在 Amazon S3 中時，指定 scriptArgument 的多個值很有幫助。 | String | 
| scriptUri | URI，指定要在此活動中執行的 SQL 指令碼位置。 | String | 

 


****  

| 必要的群組 (下列其中之一為必要) | Description | 槽類型 | 
| --- | --- | --- | 
| runsOn | 執行活動或命令的可運算資源。例如，Amazon EC2 執行個體或 Amazon EMR 叢集。 | 參考物件，例如 "runsOn":\$1"ref":"myResourceId"\$1 | 
| workerGroup | 工作者群組。這是用於路由任務。如果您提供 runsOn 值，且 workerGroup 存在，則會忽略 workerGroup。 | String | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| attemptStatus | 遠端活動最新回報的狀態。 | String | 
| attemptTimeout | 遠端工作完成的逾時。如果設定，則系統可能會重試未在設定開始時間內完成的遠端活動。 | Period | 
| dependsOn | 指定與另一個可執行物件的相依性。 | 參考物件，例如 "dependsOn":\$1"ref":"myActivityId"\$1 | 
| failureAndRerunMode | 描述相依性故障或重新執行時的消費者節點行為 | 列舉 | 
| input | 輸入資料的位置。 | 參考物件，例如 "input":\$1"ref":"myDataNodeId"\$1 | 
| lateAfterTimeout | 管道排程啟動以來的時間期間，物件執行必須在此期間內啟動。 | Period | 
| maxActiveInstances | 同時作用中的元件執行個體數目上限。重新執行不計入作用中的執行個體數量。 | Integer | 
| maximumRetries | 故障時嘗試重試的次數上限 | Integer | 
| onFail | 目前物件發生故障時要執行的動作。 | 參考物件，例如 "onFail":\$1"ref":"myActionId"\$1 | 
| onLateAction | 若物件尚未進行排程，或是在管道排程啟動之後 'lateAfterTimeout' 所指定的時間期間內仍未完成時，應觸發的動作。 | 參考物件，例如 "onLateAction":\$1"ref":"myActionId"\$1 | 
| onSuccess | 目前物件成功時要執行的動作。 | 參考物件，例如 "onSuccess":\$1"ref":"myActionId"\$1 | 
| output | 輸出資料的位置。此項目只在從指令碼內部進行參考 (例如 \$1\$1output.tablename\$1) 及透過在輸出資料節點中設定 'createTableSql' 來建立輸出資料表時才有用。SQL 查詢的輸出不會寫入輸出資料節點。 | 參考物件，例如 "output":\$1"ref":"myDataNodeId"\$1 | 
| parent | 目前物件的父系，其插槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 
| pipelineLogUri | 上傳管道日誌的 S3 URI (例如 's3://BucketName/Key/')。 | String | 
| precondition | 選擇是否定義先決條件。在所有先決條件滿足前，資料節點不會標示為"READY"。 | 參考物件，例如 "precondition":\$1"ref":"myPreconditionId"\$1 | 
| 佇列 | [僅限 Amazon Redshift] 對應到 Amazon Redshift 中的 query\$1group 設定，允許您根據活動在佇列中的位置，指派及優先處理同時進行的活動。Amazon Redshift 會將同時連線數限制在 15。如需詳細資訊，請參閱《Amazon Redshift 資料庫開發人員指南》中的[將查詢指派給佇列](https://docs.aws.amazon.com/redshift/latest/dg/cm-c-executing-queries.html)。 | String | 
| reportProgressTimeout | 遠端工作連續呼叫 reportProgress 的逾時。如果設定，則不回報指定時段進度的遠端活動，可能會視為已停滯而重試。 | Period | 
| retryDelay | 兩次重試嘗試之間的逾時持續時間。 | Period | 
| scheduleType |  排程類型可讓您指定管道定義的物件應該排程在間隔開頭還是間隔結尾。值為：`cron`、`ondemand` 和 `timeseries`。  `timeseries` 排程表示執行個體會排程在每個間隔的結尾。 `cron` 排程表示執行個體會排程在每個間隔的開頭。 `ondemand` 排程可讓您在每次啟用時執行一次管道。這表示您不必複製或重新建立管道，然後再執行一次。若您使用 `ondemand` 排程，則必須在預設物件中指定此排程，且其必須是針對管道中物件指定的唯一 `scheduleType`。若要使用 `ondemand` 管道，請針對每次後續執行呼叫 `ActivatePipeline` 操作。  | 列舉 | 
| scriptArgument | 指令碼的變數清單。您也可以改為將表達式直接置放在指令碼欄位中。當指令碼存放在 Amazon S3 中時，針對 scriptArgument 指定多個值會很有用。範例：\$1\$1format(@scheduledStartTime, "YY-MM-DD HH:MM:SS"\$1\$1n\$1\$1format(plusPeriod(@scheduledStartTime, "1 day"), "YY-MM-DD HH:MM:SS"\$1 | String | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @activeInstances | 目前已排程的作用中執行個體物件清單。 | 參考物件，例如 "activeInstances":\$1"ref":"myRunnableObjectId"\$1 | 
| @actualEndTime | 此物件執行完成的時間。 | DateTime | 
| @actualStartTime | 此物件執行開始的時間。 | DateTime | 
| cancellationReason | 若此物件已取消，會提供 cancellationReason。 | String | 
| @cascadeFailedOn | 物件失敗所在的相依鏈的描述。 | 參考物件，例如 "cascadeFailedOn":\$1"ref":"myRunnableObjectId"\$1 | 
| emrStepLog | 只在 EMR 活動嘗試時才可使用的 EMR 步驟日誌 | String | 
| errorId | 若此物件失敗，會提供 errorId。 | String | 
| errorMessage | 若此物件失敗，會提供 errorMessage。 | String | 
| errorStackTrace | 如果此物件失敗，則為錯誤堆疊追蹤。 | String | 
| @finishedTime | 此物件完成其執行的時間。 | DateTime | 
| hadoopJobLog | 嘗試 EMR 型活動可用的 Hadoop 任務日誌。 | String | 
| @healthStatus | 反映已達終止狀態之最後一個物件執行個體成功或失敗的物件運作狀態。 | String | 
| @healthStatusFromInstanceId | 已達終止狀態之最後一個執行個體物件的 ID。 | String | 
| @healthStatusUpdatedTime | 上次更新運作狀態的時間。 | DateTime | 
| hostname | 選取任務嘗試之用戶端的主機名稱。 | String | 
| @lastDeactivatedTime | 此物件最後停用的時間。 | DateTime | 
| @latestCompletedRunTime | 執行完成最近一次執行的時間。 | DateTime | 
| @latestRunTime | 執行排程最近一次執行的時間。 | DateTime | 
| @nextRunTime | 下次要排程執行的時間。 | DateTime | 
| reportProgressTime | 遠端活動最近報告進度的時間。 | DateTime | 
| @scheduledEndTime | 物件的排程結束時間 | DateTime | 
| @scheduledStartTime | 物件的排程開始時間 | DateTime | 
| @status | 此物件的狀態。 | String | 
| @version | 建立物件使用的管道版本。 | String | 
| @waitingOn | 此物件等待之相依性清單的描述。 | 參考物件，例如 "waitingOn":\$1"ref":"myRunnableObjectId"\$1 | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤。 | String | 
| @pipelineId | 此物件所屬管道的 ID。 | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件。 | String | 