

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

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

# 資料格式
<a name="dp-object-dataformats"></a>

以下是 AWS Data Pipeline 資料格式物件：

**Topics**
+ [CSV 資料格式](dp-object-csv.md)
+ [自訂資料格式](dp-object-custom.md)
+ [DynamoDBDataFormat](dp-object-dynamodbdataformat.md)
+ [DynamoDBExportDataFormat](dp-object-dynamodbexportdataformat.md)
+ [RegEx 資料格式](dp-object-regex.md)
+ [TSV 資料格式](dp-object-tsv.md)

# CSV 資料格式
<a name="dp-object-csv"></a>

逗號分隔資料格式，其中資料行的分隔符號為逗號，記錄的分隔符號則是換行字元。

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

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

```
{
  "id" : "MyOutputDataType",
  "type" : "CSV",
  "column" : [
    "Name STRING",
    "Score INT",
    "DateOfBirth TIMESTAMP"
  ]
}
```

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


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| 欄位 | 針對此資料節點描述的資料，含每個欄位所指定之資料類型的欄位名稱。例如：hostname STRING 若是多個值，請使用欄位名稱和資料類型，並以空格分隔。 | String | 
| escapeChar | 可指示剖析器忽略下一個字元的字元 (例如 "\$1")。 | String | 
| parent | 目前物件的父系，其插槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @version | 建立物件使用的管道版本。 | String | 

 


****  

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

# 自訂資料格式
<a name="dp-object-custom"></a>

合併特定資料行分隔符號、記錄分隔符號及逸出字元的自訂資料格式。

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

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

```
{
  "id" : "MyOutputDataType",
  "type" : "Custom",
  "columnSeparator" : ",",
  "recordSeparator" : "\n",
  "column" : [
    "Name STRING",
    "Score INT",
    "DateOfBirth TIMESTAMP"
  ]
}
```

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


****  

| 必要欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| columnSeparator | 指出資料檔案中資料行結尾的字元。 | String | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| 欄位 | 針對此資料節點描述的資料，含每個欄位所指定之資料類型的欄位名稱。例如：hostname STRING 若是多個值，請使用欄位名稱和資料類型，並以空格分隔。 | String | 
| parent | 目前物件的父系，其插槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 
| recordSeparator | 指出資料檔案中資料列結尾的字元，例如 "\$1n"。僅支援單一字元。 | String | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @version | 建立物件使用的管道版本。 | String | 

 


****  

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

# DynamoDBDataFormat
<a name="dp-object-dynamodbdataformat"></a>

將結構描述套用至 DynamoDB 資料表，讓 Hive 查詢可存取。 `DynamoDBDataFormat` 會與`HiveActivity`物件和`DynamoDBDataNode`輸入和輸出搭配使用。 `DynamoDBDataFormat`要求您指定 Hive 查詢中的所有資料欄。如需在 Hive 查詢或 Amazon S3 支援中指定特定資料欄的更多彈性，請參閱 [DynamoDBExportDataFormat](dp-object-dynamodbexportdataformat.md)。

**注意**  
DynamoDB Boolean (布林) 類型不會映射到 Hive Boolean (布林) 類型。但是，您可以將 DynamoDB 整數值 0 或 1 映射到 Hive Boolean 類型。

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

以下範例會示範如何使用 `DynamoDBDataFormat` 來將結構描述指派給 `DynamoDBDataNode` 輸入，允許 `HiveActivity` 物件透過具名資料行存取資料，並將資料複製到 `DynamoDBDataNode` 輸出。

```
{
  "objects": [
    {
      "id" : "Exists.1",
      "name" : "Exists.1",
      "type" : "Exists"
    },
    {
      "id" : "DataFormat.1",
      "name" : "DataFormat.1",
      "type" : "DynamoDBDataFormat",
      "column" : [ 
         "hash STRING", 
        "range STRING" 
      ]
    },
    {
      "id" : "DynamoDBDataNode.1",
      "name" : "DynamoDBDataNode.1",
      "type" : "DynamoDBDataNode",
      "tableName" : "$INPUT_TABLE_NAME",
      "schedule" : { "ref" : "ResourcePeriod" },
      "dataFormat" : { "ref" : "DataFormat.1" }
    },
    {
      "id" : "DynamoDBDataNode.2",
      "name" : "DynamoDBDataNode.2",
      "type" : "DynamoDBDataNode",
      "tableName" : "$OUTPUT_TABLE_NAME",
      "schedule" : { "ref" : "ResourcePeriod" },
      "dataFormat" : { "ref" : "DataFormat.1" }
    },
    {
      "id" : "EmrCluster.1",
      "name" : "EmrCluster.1",
      "type" : "EmrCluster",
      "schedule" : { "ref" : "ResourcePeriod" },
      "masterInstanceType" : "m1.small",
      "keyPair" : "$KEYPAIR"
    },
    {
      "id" : "HiveActivity.1",
      "name" : "HiveActivity.1",
      "type" : "HiveActivity",
      "input" : { "ref" : "DynamoDBDataNode.1" },
      "output" : { "ref" : "DynamoDBDataNode.2" },
      "schedule" : { "ref" : "ResourcePeriod" },
      "runsOn" : { "ref" : "EmrCluster.1" },
      "hiveScript" : "insert overwrite table ${output1} select * from ${input1} ;"
    },
    {
      "id" : "ResourcePeriod",
      "name" : "ResourcePeriod",
      "type" : "Schedule",
      "period" : "1 day",
      "startDateTime" : "2012-05-04T00:00:00",
      "endDateTime" : "2012-05-05T00:00:00"
    }
  ]
}
```

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


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| 欄位 | 針對此資料節點描述的資料，含每個欄位所指定之資料類型的欄位名稱。例如 hostname STRING。若是多個值，請使用欄位名稱和資料類型，並以空格分隔。 | String | 
| parent | 目前物件的父系，其槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @version | 用來建立物件的管道版本。 | String | 

 


****  

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

# DynamoDBExportDataFormat
<a name="dp-object-dynamodbexportdataformat"></a>

將結構描述套用至 DynamoDB 資料表，讓 Hive 查詢可存取。搭配 `HiveCopyActivity` 物件及 `DynamoDBDataNode` 或 `S3DataNode` 輸入和輸出使用 `DynamoDBExportDataFormat`。`DynamoDBExportDataFormat` 具有下列優點：
+ 同時提供 DynamoDB 和 Amazon S3 支援
+ 可讓您在 Hive 查詢中透過特定資料行篩選資料
+ 即使您有稀疏結構描述，也會從 DynamoDB 匯出所有屬性

**注意**  
DynamoDB Boolean (布林) 類型不會映射到 Hive Boolean (布林) 類型。但是，您可以將 DynamoDB 整數值 0 或 1 映射到 Hive Boolean 類型。

## 範例
<a name="dynamodbexportdataformat-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="dynamodbexportdataformat-syntax"></a>


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| 欄位 | 針對此資料節點描述的資料，含每個欄位所指定之資料類型的欄位名稱。例如：hostname STRING | String | 
| parent | 目前物件的父系，其插槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @version | 建立物件使用的管道版本。 | String | 

 


****  

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

# RegEx 資料格式
<a name="dp-object-regex"></a>

規則表達式所定義的自訂資料格式。

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

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

```
{
  "id" : "MyInputDataType",
  "type" : "RegEx",
  "inputRegEx" : "([^ ]*) ([^ ]*) ([^ ]*) (-|\\[[^\\]]*\\]) ([^ \"]*|\"[^\"]*\") (-|[0-9]*) (-|[0-9]*)(?: ([^ \"]*|\"[^\"]*\") ([^ \"]*|\"[^\"]*\"))?",
  "outputFormat" : "%1$s %2$s %3$s %4$s %5$s %6$s %7$s %8$s %9$s",
  "column" : [
    "host STRING",
    "identity STRING",
    "user STRING",
    "time STRING",
    "request STRING",
    "status STRING",
    "size STRING",
    "referer STRING",
    "agent STRING"
  ]
}
```

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


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| 欄位 | 針對此資料節點描述的資料，含每個欄位所指定之資料類型的欄位名稱。例如：hostname STRING 若是多個值，請使用欄位名稱和資料類型，並以空格分隔。 | String | 
| inputRegEx | 用來剖析 S3 輸入檔的規則表達式。inputRegEx 提供一種方法，可從檔案中相對非結構化的資料擷取資料欄。 | String | 
| outputFormat | inputRegEx 擷取的欄位，但使用 Java 格式化語法則參考為 %1\$1s %2\$1s。 | String | 
| parent | 目前物件的父系，其插槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @version | 建立物件使用的管道版本。 | String | 

 


****  

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

# TSV 資料格式
<a name="dp-object-tsv"></a>

逗號分隔資料格式，其中資料行的分隔符號為 tab 字元，記錄的分隔符號則是換行字元。

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

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

```
{
  "id" : "MyOutputDataType",
  "type" : "TSV",
  "column" : [
    "Name STRING",
    "Score INT",
    "DateOfBirth TIMESTAMP"
  ]
}
```

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


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| 欄位 | 此資料節點描述之資料的資料欄名稱和資料類型。例如 "Name STRING" 代表名稱為 Name 的資料欄與 STRING 資料類型的欄位。以逗號分隔多個資料欄名稱和資料類型對 (如範例中所示)。 | String | 
| columnSeparator | 字元，其可將某個資料欄中的欄位與下一個資料欄的欄位分隔出來。預設為 '\$1t'。 | String | 
| escapeChar | 可指示剖析器忽略下一個字元的字元 (例如 "\$1")。 | String | 
| parent | 目前物件的父系，其插槽已被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 
| recordSeparator | 分隔記錄的字元。預設為 '\$1n'。 | String | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @version | 建立物件時使用的管道版本。 | String | 

 


****  

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