

AWS Data Pipeline tidak lagi tersedia untuk pelanggan baru. Pelanggan yang sudah ada AWS Data Pipeline dapat terus menggunakan layanan seperti biasa. [Pelajari selengkapnya](https://aws.amazon.com/blogs/big-data/migrate-workloads-from-aws-data-pipeline/)

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Penahapan Data dan Tabel dengan Aktivitas Alur
<a name="dp-concepts-staging"></a>

AWS Data Pipeline dapat melakukan input dan output data dalam pipeline Anda untuk mempermudah penggunaan aktivitas tertentu, seperti `ShellCommandActivity` dan`HiveActivity`. 

Penahapan data memungkinkan Anda untuk menyalin data dari simpul data input ke sumber daya yang menjalankan aktivitas, dan, sama halnya, dari sumber daya ke simpul data output. 

Data bertahap pada sumber daya Amazon EMR atau Amazon EC2 tersedia dengan menggunakan variabel khusus dalam perintah shell aktivitas atau skrip Hive. 

Penahapan tabel mirip dengan penahapan data, kecuali data yang ditahapkan berbentuk tabel basis data, khususnya. 

AWS Data Pipeline mendukung skenario pementasan berikut:
+ Penahapan data dengan `ShellCommandActivity`
+ Penahapan tabel dengan Hive dan simpul data yang didukung penahapan
+ Penahapan tabel dengan Hive dan simpul data yang tidak didukung penahapan

**catatan**  
Penahapan hanya berfungsi ketika bidang `stage` diatur ke `true` pada suatu aktivitas, seperti `ShellCommandActivity`. Untuk informasi selengkapnya, lihat [ShellCommandActivity](dp-object-shellcommandactivity.md).

Selain itu, simpul data dan aktivitas dapat berhubungan dalam empat cara:

Penahapan data secara lokal pada sumber daya  
Data input secara otomatis disalin ke sistem file lokal sumber daya. Data output secara otomatis disalin dari sistem file lokal sumber daya ke simpul data output. Misalnya, ketika Anda mengonfigurasi input dan output `ShellCommandActivity` dengan penahapan = true, data input tersedia sebagai INPUT*x*\$1STAGING\$1DIR dan data output tersedia sebagai OUTPUT*x*\$1STAGING\$1DIR, di mana *x* adalah jumlah input atau output.

Penahapan definisi input dan output untuk suatu aktivitas  
Format data input (nama kolom dan nama tabel) secara otomatis disalin ke sumber daya aktivitas. Misalnya, ketika Anda mengkonfigurasi `HiveActivity` dengan penahapan = true. Format data yang ditentukan pada input `S3DataNode` digunakan untuk menentukan definisi tabel dari tabel Hive.

Penahapan tidak diaktifkan  
Objek input dan output serta bidangnya tersedia untuk aktivitas, tetapi datanya sendiri tidak tersedia. Misalnya, `EmrActivity` secara default atau saat Anda mengonfigurasi aktivitas lain dengan penahapan = false. Dalam konfigurasi ini, bidang data tersedia untuk aktivitas untuk membuat referensi ke mereka menggunakan sintaks AWS Data Pipeline ekspresi, dan ini hanya terjadi ketika ketergantungan terpenuhi. Ini berfungsi sebagai pemeriksaan dependensi saja. Kode dalam aktivitas bertanggung jawab untuk menyalin data dari input ke sumber daya yang menjalankan aktivitas.

Hubungan dependensi antar objek  
Ada hubungan tergantung-pada antara dua objek, yang menghasilkan situasi yang sama ketika penahapan tidak diaktifkan. Hal ini menyebabkan simpul data atau aktivitas bertindak sebagai prasyarat untuk eksekusi aktivitas lain.

## Pementasan Data dengan ShellCommandActivity
<a name="dp-concepts-datastaging"></a>

Pertimbangkan skenario menggunakan `S3DataNode` objek `ShellCommandActivity` with sebagai input dan output data. AWS Data Pipeline secara otomatis tahap node data untuk membuat mereka dapat diakses oleh perintah shell seolah-olah mereka adalah folder file lokal menggunakan variabel lingkungan `${INPUT1_STAGING_DIR}` dan `${OUTPUT1_STAGING_DIR}` seperti yang ditunjukkan dalam contoh berikut. Bagian numerik dari variabel bernama `INPUT1_STAGING_DIR` dan kenaikan `OUTPUT1_STAGING_DIR` tergantung pada jumlah simpul data referensi aktivitas Anda.

**catatan**  
 Skenario ini hanya berfungsi seperti yang dijelaskan jika input dan output data Anda adalah objek `S3DataNode`. Selain itu, penahapan data output hanya diperbolehkan jika `directoryPath` diatur pada objek `S3DataNode` output. 

```
{
  "id": "AggregateFiles",
  "type": "ShellCommandActivity",
  "stage": "true",
  "command": "cat ${INPUT1_STAGING_DIR}/part* > ${OUTPUT1_STAGING_DIR}/aggregated.csv",
  "input": {
    "ref": "MyInputData"
  },
  "output": {
    "ref": "MyOutputData"
  }
},
{
  "id": "MyInputData",
  "type": "S3DataNode",
  "schedule": {
    "ref": "MySchedule"
  },
  "filePath": "s3://my_bucket/source/#{format(@scheduledStartTime,'YYYY-MM-dd_HHmmss')}/items"
  }
},                    
{
  "id": "MyOutputData",
  "type": "S3DataNode",
  "schedule": {
    "ref": "MySchedule"
  },
  "directoryPath": "s3://my_bucket/destination/#{format(@scheduledStartTime,'YYYY-MM-dd_HHmmss')}"
  }
},
...
```

## Penahapan Tabel dengan Hive dan Simpul Data yang Didukung Penahapan
<a name="dp-concepts-tablestaging"></a>

Pertimbangkan skenario menggunakan `S3DataNode` objek `HiveActivity` with sebagai input dan output data. AWS Data Pipeline secara otomatis tahap node data untuk membuat mereka dapat diakses oleh skrip Hive seolah-olah mereka adalah tabel Hive menggunakan variabel `${input1}` dan `${output1}` seperti yang ditunjukkan dalam contoh berikut untuk. `HiveActivity` Bagian numerik dari variabel bernama `input` dan kenaikan `output` tergantung pada jumlah simpul data referensi aktivitas Anda.

**catatan**  
 Skenario ini hanya berfungsi seperti yang dijelaskan jika input dan output data Anda adalah objek `S3DataNode` atau `MySqlDataNode`. Penahapan tabel tidak didukung untuk `DynamoDBDataNode`.

```
{
  "id": "MyHiveActivity",
  "type": "HiveActivity",
  "schedule": {
    "ref": "MySchedule"
  },
  "runsOn": {
    "ref": "MyEmrResource"
  },
  "input": {
    "ref": "MyInputData"
  },
  "output": {
    "ref": "MyOutputData"
  },
  "hiveScript": "INSERT OVERWRITE TABLE ${output1} select * from ${input1};"
},
{
  "id": "MyInputData",
  "type": "S3DataNode",
  "schedule": {
    "ref": "MySchedule"
  },
  "directoryPath": "s3://test-hive/input"
  }
},                    
{
  "id": "MyOutputData",
  "type": "S3DataNode",
  "schedule": {
    "ref": "MySchedule"
  },
  "directoryPath": "s3://test-hive/output"
  }
},
...
```

## Penahapan Tabel dengan Hive dan Simpul Data yang Tidak Didukung Penahapan
<a name="dp-concepts-nostaging"></a>

Pertimbangkan skenario menggunakan `HiveActivity` dengan `DynamoDBDataNode` sebagai input data dan objek `S3DataNode` sebagai output. Tidak ada penahapan data yang tersedia untuk `DynamoDBDataNode`, oleh karena itu Anda harus terlebih dahulu secara manual membuat tabel dalam skrip Hive Anda, menggunakan nama variabel `#{input.tableName}` untuk merujuk ke tabel DynamoDB. Nomenklatur serupa berlaku jika tabel DynamoDB adalah outputnya, kecuali Anda menggunakan variabel `#{output.tableName}`. Penahapan tersedia untuk objek `S3DataNode` output dalam contoh ini, oleh karena itu Anda dapat merujuk ke simpul data output sebagai `${output1}`.

**catatan**  
Dalam contoh ini, variabel nama tabel memiliki awalan karakter \$1 (hash) karena AWS Data Pipeline menggunakan ekspresi untuk mengakses or. `tableName` `directoryPath` Untuk informasi lebih lanjut tentang cara kerja evaluasi ekspresi AWS Data Pipeline, lihat[Evaluasi Ekspresi](dp-pipeline-expressions.md#dp-datatype-functions).

```
{
  "id": "MyHiveActivity",
  "type": "HiveActivity",
  "schedule": {
    "ref": "MySchedule"
  },
  "runsOn": {
    "ref": "MyEmrResource"
  },
  "input": {
    "ref": "MyDynamoData"
  },
  "output": {
    "ref": "MyS3Data"
  },
  "hiveScript": "-- Map DynamoDB Table
SET dynamodb.endpoint=dynamodb.us-east-1.amazonaws.com;
SET dynamodb.throughput.read.percent = 0.5;
CREATE EXTERNAL TABLE dynamodb_table (item map<string,string>)
STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler'
TBLPROPERTIES ("dynamodb.table.name" = "#{input.tableName}"); 
INSERT OVERWRITE TABLE ${output1} SELECT * FROM dynamodb_table;"
},
{
  "id": "MyDynamoData",
  "type": "DynamoDBDataNode",
  "schedule": {
    "ref": "MySchedule"
  },
  "tableName": "MyDDBTable"
},                 
{
  "id": "MyS3Data",
  "type": "S3DataNode",
  "schedule": {
    "ref": "MySchedule"
  },
  "directoryPath": "s3://test-hive/output"
  }
},
...
```