

# Consultas de los registros de Amazon EMR
<a name="emr-logs"></a>

Amazon EMR y las aplicaciones de macrodatos que se ejecutan en Amazon EMR producen archivos de registro. Los archivos de registro se escriben en el [nodo principal](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-master-core-task-nodes.html). Además, puede configurar Amazon EMR de manera que archive los archivos de registro en Amazon S3 automáticamente. Puede utilizar Amazon Athena para consultar estos registros con el fin de identificar eventos y tendencias de las aplicaciones y los clústeres. Para obtener más información sobre los tipos de archivos de registro en Amazon EMR y guardarlos en Amazon S3, consulte [Ver archivos de registro](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-manage-view-web-log-files.html) en la *Guía de administración de Amazon EMR*.

**Topics**
+ [Creación y consulta de una tabla básica basada en archivos de registro de Amazon EMR](emr-create-table.md)
+ [Creación y consulta de una tabla particionada basada en los registros de Amazon EMR](emr-create-table-partitioned.md)

# Creación y consulta de una tabla básica basada en archivos de registro de Amazon EMR
<a name="emr-create-table"></a>

El siguiente ejemplo crea una tabla básica, `myemrlogs`, basada en archivos de registro guardados en `s3://aws-logs-123456789012-us-west-2/elasticmapreduce/j-2ABCDE34F5GH6/elasticmapreduce/`. La ubicación de Amazon S3 utilizada en los siguientes ejemplos refleja el patrón de la ubicación de registro predeterminada para un clúster de EMR creado por la cuenta *123456789012* de Amazon Web Services en la región *us-west-2*. Si utiliza una ubicación personalizada, el patrón es s3://amzn-s3-demo-bucket/*ClusterID*.

Para obtener información sobre cómo crear una tabla con particiones para mejorar potencialmente el rendimiento de las consultas y reducir la transferencia de datos, consulte [Creación y consulta de una tabla particionada basada en los registros de 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'
```

## Consultas de ejemplo
<a name="emr-example-queries-basic"></a>

Las siguientes consultas de ejemplo se pueden ejecutar en la tabla `myemrlogs` creada por el ejemplo anterior.

**Example – Consultar registros de pasos para incidentes de ERROR, WARN, INFO, EXCEPTION, FATAL o 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 – Consultar un registro de instancia específico, i-00b3c0a839ece0a9c, para ERROR, WARN, INFO, EXCEPTION, FATAL o 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 – Consultar los registros de aplicación Presto para ERROR, WARN, INFO, EXCEPTION, FATAL o 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 – Consultar los registros de aplicación Namenode para ERROR, WARN, INFO, EXCEPTION, FATAL o 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 – Consultar todos los registros por fecha y hora para ERROR, WARN, INFO, EXCEPTION, FATAL o 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;
```

# Creación y consulta de una tabla particionada basada en los registros de Amazon EMR
<a name="emr-create-table-partitioned"></a>

Estos ejemplos utilizan la misma ubicación de registro para crear una tabla de Athena, pero la tabla está particionada y, a continuación, se crea una partición para cada ubicación de registro. Para obtener más información, consulte [Partición de datos](partitions.md).

La siguiente consulta crea la tabla particionada con el nombre `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'
```

Las siguientes instrucciones de consulta crean particiones de tabla basadas en subdirectorios para diferentes tipos de registro que Amazon EMR crea en 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/'
```

Después de crear las particiones, puede ejecutar una consulta `SHOW PARTITIONS` en la tabla para confirmar:

```
SHOW PARTITIONS mypartitionedemrlogs;
```

## Consultas de ejemplo
<a name="emr-example-queries-partitioned"></a>

Los siguientes ejemplos demuestran que las consultas de entradas de registro específicas utilizan la tabla y las particiones creadas por los ejemplos anteriores.

**Example – Consulta de los registros de aplicación de application\$11561661818238\$10002 en la partición de contenedores para ERROR o 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 – Consulta de la partición Hadoop-Mapreduce para el trabajo job\$11561661818238\$10004 y las reducciones con error**  

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

**Example – Consulta de los registros de Hive en la partición de nodo para el ID de consulta 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 – Consulta de los registros Resourcemanager en la partición de nodo para la aplicación 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
```