

AWS Data Pipeline non è più disponibile per i nuovi clienti. I clienti esistenti di AWS Data Pipeline possono continuare a utilizzare il servizio normalmente. [Ulteriori informazioni](https://aws.amazon.com/blogs/big-data/migrate-workloads-from-aws-data-pipeline/)

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Dati e tabelle in gestione temporanea con attività della pipeline
<a name="dp-concepts-staging"></a>

AWS Data Pipeline può inserire i dati di input e output nelle pipeline per semplificare l'utilizzo di determinate attività, come `ShellCommandActivity` e. `HiveActivity` 

La gestione temporanea dei dati consente di copiare i dati dal nodo di dati di input alla risorsa che esegue l'attività e, in modo analogo, dalla risorsa al nodo di dati di output. 

I dati staged sulla risorsa Amazon EMR o Amazon EC2 sono disponibili utilizzando variabili speciali nei comandi della shell dell'attività o negli script Hive. 

La gestione temporanea delle tabelle è simile a quella dei dati, tranne che i dati in gestione temporanea assumono la forma di tabelle di database, in modo specifico. 

AWS Data Pipeline supporta i seguenti scenari di staging:
+ Gestione temporanea dei dati con `ShellCommandActivity`
+ La gestione temporanea della tabella con Hive e i nodi di dati supportati da tale gestione
+ La gestione temporanea della tabella con Hive e i nodi di dati non supportati da tale gestione

**Nota**  
La gestione temporanea funziona solo quando il campo `stage` è impostato su `true` in un'attività, ad esempio `ShellCommandActivity`. Per ulteriori informazioni, consulta [ShellCommandActivity](dp-object-shellcommandactivity.md).

Inoltre, i nodi di dati e le attività possono essere correlati in quattro modi:

Gestione temporanea dei dati in locale su una risorsa  
I dati di input vengono automaticamente copiati nel file system locale della risorsa. I dati di output vengono automaticamente copiati dal file system locale della risorsa al nodo di dati di output. Ad esempio, quando si configurano gli input e gli output `ShellCommandActivity` con gestione temporanea = true, i dati di input sono disponibili come INPUT*x*\$1STAGING\$1DIR e i dati di output sono disponibili come OUTPUT*x*\$1STAGING\$1DIR, dove *x* è il numero di input o output.

Gestione temporanea delle definizioni di input e output per un'attività  
Il formato di dati di input (nomi delle colonne e nomi delle tabelle) vengono automaticamente copiati nella risorsa dell'attività. Ad esempio, quando si configura `HiveActivity` con gestione temporanea = true. Il formato di dati specificato nell'input `S3DataNode` viene utilizzato per la definizione della tabella dalla tabella Hive.

Gestione temporanea non abilitata  
Gli oggetti di input e output e i loro campi sono disponibili per l'attività, mentre i dati no. Ad esempio, `EmrActivity` per impostazione predefinita o quando si configurano altre attività con gestione temporanea = false. In questa configurazione, i campi di dati sono disponibili affinché l'attività possa farvi riferimento utilizzando la sintassi dell' AWS Data Pipeline espressione e ciò si verifica solo quando la dipendenza è soddisfatta. Questo serve solo come controllo delle dipendenze. Il codice nell'attività è responsabile della copia dei dati dall'input alla risorsa che esegue l'attività.

Relazione di dipendenza tra gli oggetti  
Si è verificato un dipende-dalla relazione tra due oggetti, che comporta una situazione analoga a quando la gestione temporanea non è abilitata. In questo modo, i dati di un nodo o un'attività agiscono come precondizione per l'esecuzione di un'altra attività.

## Gestione temporanea dei dati con ShellCommandActivity
<a name="dp-concepts-datastaging"></a>

Consideriamo uno scenario che utilizza `S3DataNode` oggetti `ShellCommandActivity` con come input e output dei dati. AWS Data Pipeline organizza automaticamente i nodi di dati per renderli accessibili al comando shell come se fossero cartelle di file locali utilizzando le variabili di ambiente `${INPUT1_STAGING_DIR}` e `${OUTPUT1_STAGING_DIR}` come mostrato nell'esempio seguente. La porzione numerica delle variabili denominate `INPUT1_STAGING_DIR` e `OUTPUT1_STAGING_DIR` cresce a seconda del numero di nodi di dati a cui fa riferimento l'attività.

**Nota**  
 Questo scenario funziona solo se, come descritto, i dati di input e output sono oggetti `S3DataNode`. Inoltre, la gestione temporanea dei dati di output è consentita solo quando `directoryPath` è impostato sull'oggetto di output `S3DataNode`. 

```
{
  "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')}"
  }
},
...
```

## La gestione temporanea della tabella con Hive e i nodi di dati supportati da tale gestione
<a name="dp-concepts-tablestaging"></a>

Consideriamo uno scenario che utilizza `S3DataNode` oggetti `HiveActivity` con come input e output dei dati. AWS Data Pipeline organizza automaticamente i nodi di dati per renderli accessibili allo script Hive come se fossero tabelle Hive utilizzando le variabili `${input1}` e `${output1}` come mostrato nell'esempio seguente per. `HiveActivity` La porzione numerica delle variabili denominate `input` e `output` cresce a seconda del numero di nodi di dati a cui fa riferimento l'attività.

**Nota**  
 Questo scenario funziona solo se, come descritto, i dati di input e output sono oggetti `S3DataNode` o `MySqlDataNode`. La gestione temporanea delle tabelle non è supportata per `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"
  }
},
...
```

## La gestione temporanea della tabella con Hive e i nodi di dati non supportati da tale gestione
<a name="dp-concepts-nostaging"></a>

Considerare uno scenario utilizzando una `HiveActivity` con `DynamoDBDataNode` come input dei dati e un oggetto `S3DataNode` come output. Non è disponibile alcun data staging`DynamoDBDataNode`, quindi è necessario prima creare manualmente la tabella all'interno dello script hive, utilizzando il nome della variabile `#{input.tableName}` per fare riferimento alla tabella DynamoDB. Una nomenclatura simile si applica se la tabella DynamoDB è l'output, a meno che non si utilizzi una variabile. `#{output.tableName}` La gestione temporanea è disponibile per l'output dell'oggetto `S3DataNode` in questo esempio, pertanto è possibile fare riferimento al nodo dei dati di output come a `${output1}`.

**Nota**  
In questo esempio, la variabile del nome della tabella ha il prefisso del carattere \$1 (hash) perché AWS Data Pipeline utilizza espressioni per accedere a or. `tableName` `directoryPath` Per ulteriori informazioni su come funziona la valutazione delle espressioni AWS Data Pipeline, vedere. [Valutazione delle espressioni](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"
  }
},
...
```