

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Didacticiel : Utilisation d’Amazon DynamoDB et d’Apache Hive
<a name="EMRforDynamoDB.Tutorial"></a>

Dans ce didacticiel, vous allez lancer un cluster Amazon EMR, puis utiliser Apache Hive pour traiter les données stockées dans une table DynamoDB.

*Hive* est une application d’entrepôt de données pour Hadoop, qui vous permet de traiter et d’analyser des données de plusieurs sources. Hive fournit un langage similaire à SQL, *HiveQL*, qui vous permet d’utiliser des données stockées localement dans le cluster Amazon EMR ou dans une source de données externe (telle qu’Amazon DynamoDB).

Pour plus d’informations, consultez le [Didacticiel Hive](https://cwiki.apache.org/confluence/display/Hive/Tutorial).

**Topics**
+ [Avant de commencer](#EMRforDynamoDB.Tutorial.BeforeYouBegin)
+ [Étape 1 : Créer une paire de clés Amazon EC2](EMRforDynamoDB.Tutorial.EC2KeyPair.md)
+ [Étape 2 : lancer un cluster Amazon EMR](EMRforDynamoDB.Tutorial.LaunchEMRCluster.md)
+ [Étape 3 : se connecter au nœud leader](EMRforDynamoDB.Tutorial.ConnectToLeaderNode.md)
+ [Étape 4 : charger des données dans HDFS](EMRforDynamoDB.Tutorial.LoadDataIntoHDFS.md)
+ [Étape 5 : copier des données dans DynamoDB](EMRforDynamoDB.Tutorial.CopyDataToDDB.md)
+ [Étape 6 : interroger les données dans la table DynamoDB](EMRforDynamoDB.Tutorial.QueryDataInDynamoDB.md)
+ [Étape 7 : (Facultatif) nettoyer](EMRforDynamoDB.Tutorial.CleanUp.md)

## Avant de commencer
<a name="EMRforDynamoDB.Tutorial.BeforeYouBegin"></a>

Pour ce didacticiel, vous avez besoin des éléments suivants :
+ Un AWS compte. Si vous n’en avez pas, consultez [S'inscrire à AWS](SettingUp.DynamoWebService.md#SettingUp.DynamoWebService.SignUpForAWS).
+ Un client SSH (Secure Shell). Vous utilisez le client SSH pour vous connecter au nœud leader du cluster Amazon EMR et exécuter des commandes interactives. Les clients SSH sont disponibles par défaut sur la plupart des installations Linux, Unix et Mac OS X. Les utilisateurs de Windows peuvent télécharger et installer le client [PuTTY](http://www.chiark.greenend.org.uk/~sgtatham/putty/) qui prend en charge SSH.

**Étape suivante**  
[Étape 1 : Créer une paire de clés Amazon EC2](EMRforDynamoDB.Tutorial.EC2KeyPair.md)

# Étape 1 : Créer une paire de clés Amazon EC2
<a name="EMRforDynamoDB.Tutorial.EC2KeyPair"></a>

Dans cette étape, vous allez créer la paire de clés Amazon EC2 dont vous avez besoin pour vous connecter à un nœud leader Amazon EMR et exécuter les commandes Hive.

1. Connectez-vous à la console Amazon EC2 AWS Management Console et ouvrez-la à l'adresse. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)

1. Choisissez une période (par exemple, `US West (Oregon)`). Il doit s’agir de la région dans laquelle se trouve votre table DynamoDB.

1. Dans le volet de navigation, cliquez sur **Key Pairs**.

1. Choisissez **Create Key Pair** (Créer une paire de clés). 

1. Dans **Key pair name (Nom de la paire de clés)**, tapez un nom pour votre paire de clés (par exemple, `mykeypair`), puis choisissez **Create (Créer)**. 

1. Téléchargez le fichier de clé privée. Le nom de fichier se terminera par `.pem` (par exemple, `mykeypair.pem`). Enregistrez ce fichier de clé privée en lieu sûr. Il est nécessaire pour accéder à tout cluster Amazon EMR lancé avec cette paire de clés. 
**Important**  
Sans la paire de clés, vous ne pouvez pas vous connecter au nœud leader de votre cluster Amazon EMR.

   Pour plus d’informations sur les paires de clés, consultez [Paires de clés Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) dans le *Guide de l’utilisateur Amazon EC2.* 

**Étape suivante**  
[Étape 2 : lancer un cluster Amazon EMR](EMRforDynamoDB.Tutorial.LaunchEMRCluster.md)

# Étape 2 : lancer un cluster Amazon EMR
<a name="EMRforDynamoDB.Tutorial.LaunchEMRCluster"></a>

Dans cette étape, vous allez configurer et lancer un cluster Amazon EMR. Hive et un gestionnaire de stockage pour DynamoDB sont déjà installés sur le cluster.

1. [Ouvrez la console Amazon EMR à l'adresse /emr. https://console.aws.amazon.com](https://console.aws.amazon.com/emr/)

1. Choisissez **Create Cluster (Créer un cluster)**.

1. Dans la page **Create Cluster - Quick Options (Créer un cluster - Options rapides)**, procédez comme suit :

   1. Dans **Cluster Name (Nom du cluster)**, saisissez un nom pour votre cluster (par exemple, `My EMR cluster`).

   1. Dans **EC2 key pair (paire de clés EC2)**, choisissez la paire de clés que vous avez créée précédemment.

   Conservez les valeurs par défaut des autres paramètres.

1. Choisissez **Create Cluster (Créer un cluster)**.

Le lancement de votre cluster prend plusieurs minutes. Vous pouvez utiliser la page **Cluster Details (Détails du cluster)** dans la console Amazon EMR pour surveiller sa progression.

Lorsque l’état du cluster est `Waiting`, cela signifie que la cluster est prêt pour utilisation.

## Fichiers journaux de cluster et Amazon S3
<a name="EMRforDynamoDB.Tutorial.LaunchEMRCluster.LogFilesAndS3"></a>

Un cluster Amazon EMR génère des fichiers journaux contenant des informations sur l’état du cluster et des informations de débogage. Les paramètres par défaut pour **Create Cluster - Quick Options (Créer un cluster - Options rapides)** incluent la configuration de la journalisation Amazon EMR.

S'il n'en existe pas déjà un, il AWS Management Console crée un compartiment Amazon S3. Le nom du bucket est`aws-logs-account-id-region`, où se trouvent ` account-id` votre numéro de AWS compte et `region` la région dans laquelle vous avez lancé le cluster (par exemple,`aws-logs-123456789012-us-west-2`).

**Note**  
Vous pouvez utiliser la console Amazon S3 pour afficher les fichiers journaux. Pour plus d’informations, consultez [Afficher les fichiers journaux](https://docs.aws.amazon.com/ElasticMapReduce/latest/ManagementGuide/emr-manage-view-web-log-files.html) dans le *Guide de gestion Amazon EMR*.

Vous pouvez utiliser ce compartiment à des fins autres que la journalisation. Par exemple, vous pouvez utiliser le compartiment comme emplacement pour stocker un script Hive ou comme destination lors de l’exportation de données d’Amazon DynamoDB vers Amazon S3.

**Étape suivante**  
[Étape 3 : se connecter au nœud leader](EMRforDynamoDB.Tutorial.ConnectToLeaderNode.md)

# Étape 3 : se connecter au nœud leader
<a name="EMRforDynamoDB.Tutorial.ConnectToLeaderNode"></a>

Lorsque l’état de votre cluster Amazon EMR est `Waiting`, vous pouvez vous connecter au nœud leader en utilisant le protocole SSH, et effectuer des opérations de ligne de commande.

1. Dans la console Amazon EMR, choisissez le nom de votre cluster pour afficher son état.

1. Dans la page **Cluster Details (Détails du cluster)**, recherchez le champ **Leader public DNS (DNS public leader)**. Il s’agit du nom DNS public du nœud leader de votre cluster Amazon EMR.

1. À droite du nom DNS, choisissez le lien **SSH**.

1. Suivez les instructions fournies dans **Connexion au nœud leader à l’aide de SSH**.

   En fonction de votre système d’exploitation, choisissez l’onglet **Windows** ou **Mac/Linux**, puis suivez les instructions de connexion au nœud leader.

Une fois connecté au nœud leader à l’aide de SSH ou de PuTTY, vous devriez voir une invite de commande similaire à la suivante :

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

**Étape suivante**  
[Étape 4 : charger des données dans HDFS](EMRforDynamoDB.Tutorial.LoadDataIntoHDFS.md)

# Étape 4 : charger des données dans HDFS
<a name="EMRforDynamoDB.Tutorial.LoadDataIntoHDFS"></a>

Dans cette étape, vous allez copier un fichier de données dans Hadoop Distributed File System (HDFS), puis créer une table Hive externe qui mappe à ce fichier de données.

**Télécharger l’échantillon de données**

1. Téléchargez l’archive de l’échantillon de données (`features.zip`) :

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

1. Extrayez le fichier `features.txt` de l’archive :

   ```
   unzip features.zip
   ```

1. Affichez les premières lignes du fichier `features.txt` :

   ```
   head features.txt
   ```

   Le résultat doit ressembler à ceci :

   ```
   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
   ```

   [Le `features.txt` fichier contient un sous-ensemble de données du Bureau des noms géographiques des États-Unis d'Amérique (http://geonames.usgs). gov/domestic/download](http://geonames.usgs.gov/domestic/download_data.htm)\$1data.htm). Les champs de chaque ligne représentent les éléments suivants :
   + ID de fonction (identifiant unique)
   + Nom
   + Classe (lac, forêt, rivière, etc.)
   + State
   + Latitude (degrés)
   + Longitude (degrés)
   + Altitude (pieds)

1. A partir d’une invite de commande, entrez la commande suivante :

   ```
   hive
   ```

   L’invite de commande devient : `hive>`. 

1. Entrez l’instruction HiveQL suivante pour créer une table Hive native :

   ```
   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. Entrez l’instruction HiveQL suivante pour charger la table avec les données :

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

1. Vous avez maintenant une table Hive native remplie des données du fichier `features.txt`. Pour vérifier, entrez l’instruction HiveQL suivante :

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

   La sortie doit afficher une liste d’États et le nombre d’entités géographiques dans chacun d’eux.

**Étape suivante**  
[Étape 5 : copier des données dans DynamoDB](EMRforDynamoDB.Tutorial.CopyDataToDDB.md)

# Étape 5 : copier des données dans DynamoDB
<a name="EMRforDynamoDB.Tutorial.CopyDataToDDB"></a>

Dans cette étape, vous allez copier les données de la table Hive (`hive_features`) vers une nouvelle table dans DynamoDB.

1. Ouvrez la console DynamoDB à l'adresse. [https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/)

1. Choisissez **Créer une table**.

1. Dans l’écran **Create DynamoDB table (Créer une table DynamoDB)**, procédez comme suit :

   1. Dans **Table**, saisissez **Features**.

   1. Pour **Primary key (Clé primaire)**, dans le champ **Partition key (Clé de partition)**, saisissez **Id**. Définissez le type de données sur **Number (Nombre)**.

      Effacez le contenu du champ **Use Default Settings (Utiliser les paramètres par défaut)**. Pour **Provisioned Capacity (Capacité provisionnée)**, saisissez ce qui suit :
      + **Read Capacity Units (Unités de capacité de lecture)** – `10`
      + **Write Capacity Units (Unités de capacité d’écriture)** – `10`

   Sélectionnez **Create (Créer)**.

1. À l’invite Hive, saisissez l’instruction HiveQL suivante : 

   ```
   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"
   );
   ```

   Vous avez maintenant établi un mappage entre Hive et la table Features (Particularités) dans DynamoDB.

1. Entrez l’instruction HiveQL suivante pour importer des données dans 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 soumettra une MapReduce tâche, qui sera traitée par votre cluster Amazon EMR. L’accomplissement de la tâche peut prendre plusieurs minutes.

1. Vérifiez que les données ont été chargées dans DynamoDB :

   1. Dans le panneau de navigation de la console DynamoDB, choisissez **Tables**.

   1. Choisissez le tableau Fonctions, puis l’onglet **Items (Eléments)** pour afficher les données.

**Étape suivante**  
[Étape 6 : interroger les données dans la table DynamoDB](EMRforDynamoDB.Tutorial.QueryDataInDynamoDB.md)

# Étape 6 : interroger les données dans la table DynamoDB
<a name="EMRforDynamoDB.Tutorial.QueryDataInDynamoDB"></a>

Dans cette étape, vous allez utiliser HiveQL pour interroger la table Features (Particularités) dans DynamoDB. Essayez les requêtes Hive suivantes :

1. Tous les types de particularités (`feature_class`) par ordre alphabétique :

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

1. Tous les lacs dont le nom commence par la lettre « M » :

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

1. États dont au moins trois particularités sont à une altitude supérieure à un mile (5 280 pieds) :

   ```
   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;
   ```

**Étape suivante**  
[Étape 7 : (Facultatif) nettoyer](EMRforDynamoDB.Tutorial.CleanUp.md)

# Étape 7 : (Facultatif) nettoyer
<a name="EMRforDynamoDB.Tutorial.CleanUp"></a>

Maintenant que vous avez terminé le didacticiel, vous pouvez continuer à lire cette section pour en savoir plus sur l’utilisation des données DynamoDB dans Amazon EMR. Pendant ce temps, vous pouvez garder votre cluster Amazon EMR opérationnel.

Si vous n’avez plus besoin du cluster, résiliez-le et supprimez les ressources associées. Vous éviterez ainsi d’être facturé pour des ressources dont vous n’avez pas besoin.

1. Résiliez le cluster Amazon EMR :

   1. [Ouvrez la console Amazon EMR à l'adresse /emr. https://console.aws.amazon.com](https://console.aws.amazon.com/emr/)

   1. Choisissez le cluster Amazon EMR, **Terminate (Résilier)**, puis confirmez.

1. Supprimez la table Features dans DynamoDB :

   1. Ouvrez la console DynamoDB à l'adresse. [https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/)

   1. Dans le volet de navigation, choisissez **Tables**.

   1. Choisissez la table Features. Dans le menu **Actions**, choisissez **Delete Table (Supprimer la table)**.

1. Supprimez le compartiment Amazon S3 contenant les fichiers journaux Amazon EMR :

   1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

   1. Dans la liste des buckets`aws-logs- accountID-region`, choisissez où se *accountID* trouve votre numéro de AWS compte et *region* la région dans laquelle vous avez lancé le cluster.

   1. Dans le menu **Action**, choisissez **Delete (Supprimer)**.