

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à.

# Tutorial: Utilizzo di Amazon DynamoDB e Apache Hive
<a name="EMRforDynamoDB.Tutorial"></a>

In questo tutorial, viene avviato un cluster Amazon EMR e quindi si utilizza Apache Hive per elaborare i dati archiviati in una tabella DynamoDB.

*Hive* è un'applicazione di data warehouse per Hadoop che consente di elaborare e analizzare i dati da più origini. Hive fornisce un linguaggio simile a SQL, *HiveQL*, che consente di lavorare con i dati archiviati in locale nel cluster Amazon EMR o in un'origine dati esterna (ad esempio Amazon DynamoDB).

Per maggiori informazioni, vedi il [tutorial Hive](https://cwiki.apache.org/confluence/display/Hive/Tutorial).

**Topics**
+ [Prima di iniziare](#EMRforDynamoDB.Tutorial.BeforeYouBegin)
+ [Fase 1: Creazione di una coppia di chiavi di Amazon EC2](EMRforDynamoDB.Tutorial.EC2KeyPair.md)
+ [Fase 2: avvio di un cluster Amazon EMR](EMRforDynamoDB.Tutorial.LaunchEMRCluster.md)
+ [Fase 3: connessione al nodo principale](EMRforDynamoDB.Tutorial.ConnectToLeaderNode.md)
+ [Fase 4: caricamento di dati in HDFS](EMRforDynamoDB.Tutorial.LoadDataIntoHDFS.md)
+ [Fase 5: copia dei dati in DynamoDB](EMRforDynamoDB.Tutorial.CopyDataToDDB.md)
+ [Fase 6: esecuzione di query sui dati nella tabella DynamoDB](EMRforDynamoDB.Tutorial.QueryDataInDynamoDB.md)
+ [Fase 7: pulizia (opzionale)](EMRforDynamoDB.Tutorial.CleanUp.md)

## Prima di iniziare
<a name="EMRforDynamoDB.Tutorial.BeforeYouBegin"></a>

Per questo tutorial hai bisogno dei seguenti elementi:
+ Un AWS account. Se non lo hai, consulta [Iscrizione a AWS](SettingUp.DynamoWebService.md#SettingUp.DynamoWebService.SignUpForAWS).
+ Un client SSH (Secure Shell). È possibile utilizzare il client SSH per connettersi al nodo principale del cluster Amazon EMR ed eseguire comandi interattivi. I client SSH sono disponibili per impostazione predefinita nella maggior parte delle installazioni Linux, Unix e Mac OS X. Gli utenti Windows possono scaricare e installare il client [PuTTY](http://www.chiark.greenend.org.uk/~sgtatham/putty/), che ha il supporto SSH.

**Approfondimenti**  
[Fase 1: Creazione di una coppia di chiavi di Amazon EC2](EMRforDynamoDB.Tutorial.EC2KeyPair.md)

# Fase 1: Creazione di una coppia di chiavi di Amazon EC2
<a name="EMRforDynamoDB.Tutorial.EC2KeyPair"></a>

In questo passaggio, verrà creata la coppia di chiavi Amazon EC2 necessaria per connetterti a un nodo principale Amazon EMR ed eseguire i comandi Hive.

1. Accedi Console di gestione AWS e apri la console Amazon EC2 all'indirizzo. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)

1. Seleziona una regione (ad esempio, `US West (Oregon)`). Questa deve essere la stessa regione in cui si trova la tabella DynamoDB.

1. Nel pannello di navigazione scegli **Coppie di chiavi**.

1. Scegli **Crea coppia di chiavi**. 

1. In **Nome della coppia di chiavi** digita un nome per la coppia di chiavi (ad esempio, `mykeypair`), quindi seleziona **Crea**. 

1. Scarica il file della chiave privata. Il nome del file terminerà con `.pem` (come `mykeypair.pem`). Salvare il file della chiave privata in un luogo sicuro. Ne avrai bisogno per accedere a qualsiasi cluster Amazon EMR che avvii con questa coppia di chiavi. 
**Importante**  
Se perdi la coppia di chiavi, non potrai connetterti al nodo principale del cluster Amazon EMR.

   Per maggiori informazioni sulle coppie di chiavi, consulta [Coppie di chiavi Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) nella *Guida per l’utente di Amazon EC2*. 

**Approfondimenti**  
[Fase 2: avvio di un cluster Amazon EMR](EMRforDynamoDB.Tutorial.LaunchEMRCluster.md)

# Fase 2: avvio di un cluster Amazon EMR
<a name="EMRforDynamoDB.Tutorial.LaunchEMRCluster"></a>

In questa fase, verrà configurato e avviato un cluster Amazon EMR. Hive e un gestore di archiviazione per DynamoDB dovranno già essere installati nel cluster.

1. [Apri la console Amazon EMR in /emr. https://console.aws.amazon.com](https://console.aws.amazon.com/emr/)

1. Scegli **Crea cluster**.

1. Nella pagina **Crea cluster - Opzioni rapide**, completa le seguenti operazioni:

   1. In **Nome cluster**, immettere un nome per il cluster (ad esempio, `My EMR cluster`).

   1. In **Coppia di chiavi EC2)**, seleziona la coppia di chiavi creata in precedenza.

   Lascia le altre impostazioni ai valori predefiniti.

1. Scegli **Crea cluster**.

Per avviare il cluster, sono necessari diversi minuti. Puoi utilizzare la pagina **Dettagli del cluster** nella console Amazon EMR per monitorarne lo stato di avanzamento.

Quando lo stato del cluster diventa `Waiting`, allora il cluster è pronto.

## File di registro del cluster e Amazon S3
<a name="EMRforDynamoDB.Tutorial.LaunchEMRCluster.LogFilesAndS3"></a>

Un cluster Amazon EMR genera file di log che contengono informazioni sullo stato del cluster e sul debug. Le impostazioni predefinite per **Crea cluster - Opzioni rapide** includono la configurazione della registrazione di Amazon EMR.

Se non ne esiste già uno, Console di gestione AWS crea un bucket Amazon S3. Il nome del bucket è`aws-logs-account-id-region`, ` account-id` dov'è il tuo numero di AWS account e `region` indica la regione in cui hai avviato il cluster (ad esempio,). `aws-logs-123456789012-us-west-2`

**Nota**  
Puoi utilizzare la console Amazon S3 per visualizzare i file di log. Per ulteriori informazioni, consulta [Visualizzazione dei file di log](https://docs.aws.amazon.com/ElasticMapReduce/latest/ManagementGuide/emr-manage-view-web-log-files.html) nella *Guida alla gestione di Amazon EMR*.

È possibile utilizzare questo bucket per scopi diversi dalla registrazione. Ad esempio, è possibile utilizzarlo come posizione per archiviare uno script Hive o come destinazione quando si esportano dati da Amazon DynamoDB ad Amazon S3.

**Approfondimenti**  
[Fase 3: connessione al nodo principale](EMRforDynamoDB.Tutorial.ConnectToLeaderNode.md)

# Fase 3: connessione al nodo principale
<a name="EMRforDynamoDB.Tutorial.ConnectToLeaderNode"></a>

Quando lo stato del cluster Amazon EMR cambia in `Waiting`, sarai in grado di connetterti al nodo principale utilizzando SSH ed eseguire operazioni dalla riga di comando.

1. Nella console di Amazon EMR, scegli il nome del cluster per visualizzarne lo stato.

1. Nella pagina **Dettagli del cluster**, individua il campo **DNS pubblico principale**. Questo è il nome DNS pubblico del nodo principale del cluster Amazon EMR.

1. A destra del nome DNS, seleziona il link **SSH**.

1. Seguire le istruzioni riportate in **Connessione al nodo principale tramite SSH**.

   A seconda del sistema operativo in uso, seleziona la scheda **Windows** oppure la scheda **Mac/Linux** e segui le istruzioni riportate per la connessione al nodo principale.

Dopo aver effettuato la connessione al nodo principale utilizzando SSH o PuTTY, viene visualizzato un prompt dei comandi simile al seguente:

```
[hadoop@ip-192-0-2-0 ~]$ 
```

**Approfondimenti**  
[Fase 4: caricamento di dati in HDFS](EMRforDynamoDB.Tutorial.LoadDataIntoHDFS.md)

# Fase 4: caricamento di dati in HDFS
<a name="EMRforDynamoDB.Tutorial.LoadDataIntoHDFS"></a>

In questo passaggio, verrà copiato un file di dati nel file di sistema distribuito Hadoop (HDFS) e quindi verrà creata una tabella Hive esterna mappata al file di dati.

**Download dei dati di esempio**

1. Scaricare l'archivio dei dati di esempio (`features.zip`):

   ```
   wget https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/samples/features.zip
   ```

1. Estrarre il file `features.txt` dall'archivio:

   ```
   unzip features.zip
   ```

1. Visualizzare le prime righe del file `features.txt`:

   ```
   head features.txt
   ```

   I risultati dovrebbero essere simili a quanto segue:

   ```
   1535908|Big Run|Stream|WV|38.6370428|-80.8595469|794
   875609|Constable Hook|Cape|NJ|40.657881|-74.0990309|7
   1217998|Gooseberry Island|Island|RI|41.4534361|-71.3253284|10
   26603|Boone Moore Spring|Spring|AZ|34.0895692|-111.410065|3681
   1506738|Missouri Flat|Flat|WA|46.7634987|-117.0346113|2605
   1181348|Minnow Run|Stream|PA|40.0820178|-79.3800349|1558
   1288759|Hunting Creek|Stream|TN|36.343969|-83.8029682|1024
   533060|Big Charles Bayou|Bay|LA|29.6046517|-91.9828654|0
   829689|Greenwood Creek|Stream|NE|41.596086|-103.0499296|3671
   541692|Button Willow Island|Island|LA|31.9579389|-93.0648847|98
   ```

   [Il `features.txt` file contiene un sottoinsieme di dati del Board on Geographic Names degli Stati Uniti (http://geonames.usgs. gov/domestic/download](http://geonames.usgs.gov/domestic/download_data.htm)\$1data.htm). I campi di ogni riga rappresentano i seguenti elementi:
   + ID funzione (identificatore univoco)
   + Name
   + Classe (lake, forest, stream e così via)
   + Stato
   + Latitudine (gradi)
   + Longitudine (gradi)
   + Altezza (in piedi)

1. Al prompt dei comandi, inserisci il comando seguente:

   ```
   hive
   ```

   Il prompt dei comandi viene modificato in `hive>`. 

1. Immettere la seguente istruzione HiveQL per creare una tabella Hive nativa:

   ```
   CREATE TABLE hive_features
       (feature_id             BIGINT,
       feature_name            STRING ,
       feature_class           STRING ,
       state_alpha             STRING,
       prim_lat_dec            DOUBLE ,
       prim_long_dec           DOUBLE ,
       elev_in_ft              BIGINT)
       ROW FORMAT DELIMITED
       FIELDS TERMINATED BY '|'
       LINES TERMINATED BY '\n';
   ```

1. Immettere la seguente istruzione HiveQL per caricare la tabella con i dati:

   ```
   LOAD DATA
   LOCAL
   INPATH './features.txt'
   OVERWRITE
   INTO TABLE hive_features;
   ```

1. Ora si dispone di una tabella Hive nativa popolata con i dati dal file `features.txt`. Per verificare, immettere la seguente istruzione HiveQL:

   ```
   SELECT state_alpha, COUNT(*)
   FROM hive_features
   GROUP BY state_alpha;
   ```

   L'output dovrebbe mostrare un elenco di stati e il numero di caratteristiche geografiche in ciascuno.

**Approfondimenti**  
[Fase 5: copia dei dati in DynamoDB](EMRforDynamoDB.Tutorial.CopyDataToDDB.md)

# Fase 5: copia dei dati in DynamoDB
<a name="EMRforDynamoDB.Tutorial.CopyDataToDDB"></a>

In questa fase, i dati verranno copiati dalla tabella Hive (`hive_features`) in una nuova tabella in DynamoDB.

1. Apri la console DynamoDB all'indirizzo. [https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/)

1. Scegliere **Create Table (Crea tabella)**.

1. Nello schermata **Crea tabella DynamoDB**, procedi nel seguente modo:

   1. In **Tabella**, digitare **Features**.

   1. Per **Chiave primaria**, nel campo **Chiave di partizione**, digitare **Id**. Impostare il tipo di dati su **Number (Numero)**.

      Deseleziona l'opzione **Utilizza impostazioni predefinite**. In **Capacità con provisioning**, specificare:
      + **Unità di capacità in lettura**-`10`
      + **Unità di capacità in scrittura**-`10`

   Scegli **Crea**.

1. Al prompt di Hive immettere la seguente istruzione HiveQL: 

   ```
   CREATE EXTERNAL TABLE ddb_features
       (feature_id   BIGINT,
       feature_name  STRING,
       feature_class STRING,
       state_alpha   STRING,
       prim_lat_dec  DOUBLE,
       prim_long_dec DOUBLE,
       elev_in_ft    BIGINT)
   STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler'
   TBLPROPERTIES(
       "dynamodb.table.name" = "Features",
       "dynamodb.column.mapping"="feature_id:Id,feature_name:Name,feature_class:Class,state_alpha:State,prim_lat_dec:Latitude,prim_long_dec:Longitude,elev_in_ft:Elevation"
   );
   ```

   A questo punto, è stata stabilita una mappatura tra Hive e la tabella Caratteristiche in DynamoDB.

1. Immettere la seguente istruzione HiveQL per importare i dati in DynamoDB:

   ```
   INSERT OVERWRITE TABLE ddb_features
   SELECT
       feature_id,
       feature_name,
       feature_class,
       state_alpha,
       prim_lat_dec,
       prim_long_dec,
       elev_in_ft
   FROM hive_features;
   ```

   Hive invierà un MapReduce lavoro, che verrà elaborato dal tuo cluster Amazon EMR. Il completamento del processo può richiedere diversi minuti.

1. Verificare che i dati siano stati caricati in DynamoDB:

   1. Nel pannello di navigazione della console DynamoDB, seleziona **Tabelle**.

   1. Scegli la tabella Caratteristiche, quindi seleziona la scheda **Elementi** per visualizzare i dati.

**Approfondimenti**  
[Fase 6: esecuzione di query sui dati nella tabella DynamoDB](EMRforDynamoDB.Tutorial.QueryDataInDynamoDB.md)

# Fase 6: esecuzione di query sui dati nella tabella DynamoDB
<a name="EMRforDynamoDB.Tutorial.QueryDataInDynamoDB"></a>

In questa fase HiveQL verrà utilizzato per eseguire query nella tabella Caratteristiche in DynamoDB. Prova le seguenti query Hive:

1. Tutti i tipi di caratteristiche (`feature_class`) in ordine alfabetico:

   ```
   SELECT DISTINCT feature_class
   FROM ddb_features
   ORDER BY feature_class;
   ```

1. Tutti i lake che iniziano con la lettera "M":

   ```
   SELECT feature_name, state_alpha
   FROM ddb_features
   WHERE feature_class = 'Lake'
   AND feature_name LIKE 'M%'
   ORDER BY feature_name;
   ```

1. Stati con almeno tre caratteristiche superiori a un miglio (5.280 piedi):

   ```
   SELECT state_alpha, feature_class, COUNT(*)
   FROM ddb_features
   WHERE elev_in_ft > 5280
   GROUP by state_alpha, feature_class
   HAVING COUNT(*) >= 3
   ORDER BY state_alpha, feature_class;
   ```

**Approfondimenti**  
[Fase 7: pulizia (opzionale)](EMRforDynamoDB.Tutorial.CleanUp.md)

# Fase 7: pulizia (opzionale)
<a name="EMRforDynamoDB.Tutorial.CleanUp"></a>

Dopo aver completato il tutorial, potrai continuare a leggere questa sezione per avere ulteriori informazioni su come lavorare con i dati di DynamoDB in Amazon EMR. Potresti decidere di mantenere il tuo cluster Amazon EMR attivo e funzionante mentre esegui questa operazione.

Se il cluster non è più necessario, dovrai terminarlo e rimuovere le risorse ad esso associate. Questo ti aiuterà a evitare che ti vengano addebitate risorse che non ti servono.

1. Terminare il cluster Amazon EMR:

   1. [Apri la console Amazon EMR in /emr. https://console.aws.amazon.com](https://console.aws.amazon.com/emr/)

   1. Scegli il cluster Amazon EMR, seleziona **Termina**, quindi conferma.

1. Eliminare la tabella Caratteristiche in DynamoDB:

   1. Apri la console DynamoDB all'indirizzo. [https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/)

   1. Nel pannello di navigazione, seleziona **Tabelle**.

   1. Scegli la tabella Caratteristiche. Nel menu **Operazioni** seleziona **Elimina tabella**.

1. Eliminare il bucket Amazon S3 contenente i file di log Amazon EMR:

   1. Apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

   1. Dall'elenco dei bucket`aws-logs- accountID-region`, scegli dove si *accountID* trova il tuo numero di AWS account e *region* la regione in cui hai avviato il cluster.

   1. Nel menu **Operazioni** seleziona **Elimina**.