

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.

# Interrogation des journaux Amazon EMR
<a name="emr-logs"></a>

Amazon EMR et les applications de Big Data qui s'exécutent sur Amazon EMR produisent des fichiers journaux. Les fichiers journaux sont écrits sur le [nœud primaire](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-master-core-task-nodes.html). Vous pouvez également configurer Amazon EMR pour archiver automatiquement les fichiers journaux dans Amazon S3. Vous pouvez utiliser Amazon Athena pour interroger ces journaux afin d'identifier les événements et les tendances pour les applications et les clusters. Pour plus d'informations sur les types de fichiers journaux dans Amazon EMR et leur enregistrement dans Simple Storage Service (Amazon S3), consultez la rubrique [Affichage des fichiers journaux](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-manage-view-web-log-files.html) du *Guide de gestion Amazon EMR*.

**Topics**
+ [Création et interrogation d’une table de base basée sur des fichiers journaux Amazon EMR](emr-create-table.md)
+ [Création et interrogation d’une table partitionnée basée sur des journaux Amazon EMR](emr-create-table-partitioned.md)

# Création et interrogation d’une table de base basée sur des fichiers journaux Amazon EMR
<a name="emr-create-table"></a>

L'exemple suivant crée une table de base, `myemrlogs`, basée sur les fichiers journaux enregistrés dans `s3://aws-logs-123456789012-us-west-2/elasticmapreduce/j-2ABCDE34F5GH6/elasticmapreduce/`. L'emplacement Amazon S3 utilisé dans les exemples ci-dessous reflète le modèle de l'emplacement de journal par défaut pour un cluster EMR créé par un compte Amazon Web Services *123456789012* dans la région. *us-west-2* Si vous utilisez un emplacement personnalisé, le modèle est s3://amzn-s3-demo-bucket/*ClusterID*.

Pour plus d'informations sur la création d'une table partitionnée afin de potentiellement améliorer les performances des requêtes et réduire le transfert de données, consultez [Création et interrogation d’une table partitionnée basée sur des journaux Amazon EMR](emr-create-table-partitioned.md).

```
CREATE EXTERNAL TABLE `myemrlogs`(
  `data` string COMMENT 'from deserializer')
ROW FORMAT DELIMITED  
FIELDS TERMINATED BY '|'
LINES TERMINATED BY '\n'
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  's3://aws-logs-123456789012-us-west-2/elasticmapreduce/j-2ABCDE34F5GH6'
```

## Exemples de requêtes
<a name="emr-example-queries-basic"></a>

Les exemples de requête suivants peuvent être exécutés sur la table `myemrlogs` créée par l'exemple précédent.

**Example – Interrogation des journaux d'étape pour les occurrences de ERROR, WARN, INFO, EXCEPTION, FATAL ou DEBUG**  

```
SELECT data,
        "$PATH"
FROM "default"."myemrlogs"
WHERE regexp_like("$PATH",'s-86URH188Z6B1')
        AND regexp_like(data, 'ERROR|WARN|INFO|EXCEPTION|FATAL|DEBUG') limit 100;
```

**Example – Interrogation d'un journal d'instance spécifique, i-00b3c0a839ece0a9c, pour ERROR, WARN, INFO, EXCEPTION, FATAL ou DEBUG**  

```
SELECT "data",
        "$PATH" AS filepath
FROM "default"."myemrlogs"
WHERE regexp_like("$PATH",'i-00b3c0a839ece0a9c')
        AND regexp_like("$PATH",'state')
        AND regexp_like(data, 'ERROR|WARN|INFO|EXCEPTION|FATAL|DEBUG') limit 100;
```

**Example – Interrogation des journaux d'application Presto pour ERROR, WARN, INFO, EXCEPTION, FATAL ou DEBUG**  

```
SELECT "data",
        "$PATH" AS filepath
FROM "default"."myemrlogs"
WHERE regexp_like("$PATH",'presto')
        AND regexp_like(data, 'ERROR|WARN|INFO|EXCEPTION|FATAL|DEBUG') limit 100;
```

**Example – Interrogation des journaux d'application Namenode pour ERROR, WARN, INFO, EXCEPTION, FATAL ou DEBUG**  

```
SELECT "data",
        "$PATH" AS filepath
FROM "default"."myemrlogs"
WHERE regexp_like("$PATH",'namenode')
        AND regexp_like(data, 'ERROR|WARN|INFO|EXCEPTION|FATAL|DEBUG') limit 100;
```

**Example – Interrogation de tous les journaux par date et heure pour ERROR, WARN, INFO, EXCEPTION, FATAL ou DEBUG**  

```
SELECT distinct("$PATH") AS filepath
FROM "default"."myemrlogs"
WHERE regexp_like("$PATH",'2019-07-23-10')
        AND regexp_like(data, 'ERROR|WARN|INFO|EXCEPTION|FATAL|DEBUG') limit 100;
```

# Création et interrogation d’une table partitionnée basée sur des journaux Amazon EMR
<a name="emr-create-table-partitioned"></a>

Ces exemples utilisent le même emplacement de journal pour créer une table Athena, mais la table est partitionnée et une partition est créée pour chaque emplacement de journal. Pour de plus amples informations, veuillez consulter [Partitionner vos données](partitions.md).

La requête suivante crée la table partitionnée nommée `mypartitionedemrlogs`:

```
CREATE EXTERNAL TABLE `mypartitionedemrlogs`(
  `data` string COMMENT 'from deserializer')
 partitioned by (logtype string)
ROW FORMAT DELIMITED  
FIELDS TERMINATED BY '|'
LINES TERMINATED BY '\n'
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION 's3://aws-logs-123456789012-us-west-2/elasticmapreduce/j-2ABCDE34F5GH6'
```

Les instructions de requête suivantes créent des partitions de table basées sur des sous-répertoires pour différents types de journaux créés par Amazon EMR dans Simple Storage Service (Amazon S3) :

```
ALTER TABLE mypartitionedemrlogs ADD
     PARTITION (logtype='containers')
     LOCATION 's3://aws-logs-123456789012-us-west-2/elasticmapreduce/j-2ABCDE34F5GH6/containers/'
```

```
ALTER TABLE mypartitionedemrlogs ADD
     PARTITION (logtype='hadoop-mapreduce')
     LOCATION 's3://aws-logs-123456789012-us-west-2/elasticmapreduce/j-2ABCDE34F5GH6/hadoop-mapreduce/'
```

```
ALTER TABLE mypartitionedemrlogs ADD
     PARTITION (logtype='hadoop-state-pusher')
     LOCATION 's3://aws-logs-123456789012-us-west-2/elasticmapreduce/j-2ABCDE34F5GH6/hadoop-state-pusher/'
```

```
ALTER TABLE mypartitionedemrlogs ADD
     PARTITION (logtype='node')
     LOCATION 's3://aws-logs-123456789012-us-west-2/elasticmapreduce/j-2ABCDE34F5GH6/node/'
```

```
ALTER TABLE mypartitionedemrlogs ADD
     PARTITION (logtype='steps')
     LOCATION 's3://aws-logs-123456789012-us-west-2/elasticmapreduce/j-2ABCDE34F5GH6/steps/'
```

Après avoir créé les partitions, vous pouvez exécuter une requête `SHOW PARTITIONS` sur la table pour confirmer :

```
SHOW PARTITIONS mypartitionedemrlogs;
```

## Exemples de requêtes
<a name="emr-example-queries-partitioned"></a>

Les exemples suivants illustrent les requêtes pour des entrées de journal spécifiques utilisant la table et les partitions créées par les exemples ci-dessus.

**Example – Interrogation des journaux d'application application\$11561661818238\$10002 dans la partition des conteneurs pour ERROR ou WARN**  

```
SELECT data,
        "$PATH"
FROM "default"."mypartitionedemrlogs"
WHERE logtype='containers'
        AND regexp_like("$PATH",'application_1561661818238_0002')
        AND regexp_like(data, 'ERROR|WARN') limit 100;
```

**Example – Interrogation de la partition hadoop-Mapreduce pour la tâche job\$11561661818238\$10004 et des échecs de réduction**  

```
SELECT data,
        "$PATH"
FROM "default"."mypartitionedemrlogs"
WHERE logtype='hadoop-mapreduce'
        AND regexp_like(data,'job_1561661818238_0004|Failed Reduces') limit 100;
```

**Example – Interrogation des journaux Hive dans la partition de nœud pour l'ID de requête 056e0609-33e1-4611-956c-7a31b42d2663**  

```
SELECT data,
        "$PATH"
FROM "default"."mypartitionedemrlogs"
WHERE logtype='node'
        AND regexp_like("$PATH",'hive')
        AND regexp_like(data,'056e0609-33e1-4611-956c-7a31b42d2663') limit 100;
```

**Example – Interrogation des journaux resourcemanager dans la partition de nœud pour l'application 1567660019320\$10001\$101\$1000001**  

```
SELECT data,
        "$PATH"
FROM "default"."mypartitionedemrlogs"
WHERE logtype='node'
        AND regexp_like(data,'resourcemanager')
        AND regexp_like(data,'1567660019320_0001_01_000001') limit 100
```