

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

# Eseguire query sui log Amazon EMR
<a name="emr-logs"></a>

Amazon EMR e le applicazioni Big Data che vengono eseguite su Amazon EMR generano file di log. I file di log vengono scritti sul [nodo primario](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-master-core-task-nodes.html), ed è anche possibile configurare Amazon EMR per consentire la loro archiviazione automatica in Amazon S3. È possibile utilizzare Amazon Athena per eseguire query su questi log per identificare eventi e tendenze per applicazioni e cluster. Per ulteriori informazioni sui tipi di file di log in Amazon EMR e sul loro salvataggio in Amazon S3, consulta [Visualizzazione di file di log](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-manage-view-web-log-files.html) nella *Guida alla gestione di Amazon EMR*.

**Topics**
+ [Creare ed eseguire query su una tabella di base basata sui file di log di Amazon EMR](emr-create-table.md)
+ [Creare ed eseguire query su una tabella partizionata in base ai log di Amazon EMR](emr-create-table-partitioned.md)

# Creare ed eseguire query su una tabella di base basata sui file di log di Amazon EMR
<a name="emr-create-table"></a>

Nell'esempio seguente viene creata una tabella di base `myemrlogs`, basata sui file di log salvati in `s3://aws-logs-123456789012-us-west-2/elasticmapreduce/j-2ABCDE34F5GH6/elasticmapreduce/`. La posizione Amazon S3 utilizzata negli esempi seguenti riflette lo schema della posizione di registro predefinita per un cluster EMR creato dall'account Amazon Web Services nella regione. *123456789012* *us-west-2* Se utilizzi una posizione personalizzata, il modello è s3://amzn-s3-demo-bucket/. *ClusterID*

Per informazioni sulla creazione di una tabella partizionata per migliorare potenzialmente le prestazioni delle query e ridurre il trasferimento dei dati, consulta [Creare ed eseguire query su una tabella partizionata in base ai log di 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'
```

## Query di esempio
<a name="emr-example-queries-basic"></a>

Le query di esempio seguenti possono essere eseguite sulla tabella `myemrlogs` creata dall'esempio precedente.

**Example Esecuzione di query su log di fase per occorrenze di 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 Esecuzione di query su log di istanze specifiche, i-00b3c0a839ece0a9c, per 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 Esecuzione di query su log di applicazioni Presto per 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 Esecuzione di query su log di applicazioni Namenode per 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 Esecuzione di query su tutti i log per data e ora per 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;
```

# Creare ed eseguire query su una tabella partizionata in base ai log di Amazon EMR
<a name="emr-create-table-partitioned"></a>

Questi esempi utilizzano la stessa posizione dei log per creare una tabella Athena, ma la tabella viene partizionata e viene quindi creata una partizione per ogni posizione. Per ulteriori informazioni, consulta [Come partizionare i dati](partitions.md).

La query seguente crea la tabella partizionata denominata `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'
```

Le istruzioni di query seguenti creano quindi partizioni di tabella basate su sottodirectory per diversi tipi di log che Amazon EMR crea in 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/'
```

Dopo aver creato le partizioni, puoi eseguire una query `SHOW PARTITIONS` nella tabella per confermare:

```
SHOW PARTITIONS mypartitionedemrlogs;
```

## Query di esempio
<a name="emr-example-queries-partitioned"></a>

Negli esempi seguenti vengono illustrate le query per voci di log specifiche che utilizzano la tabella e le partizioni create dagli esempi precedenti.

**Example Esecuzione di query sui log di applicazioni application\$11561661818238\$10002 nella partizione dei contenitori per 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 Esecuzione di query sulla partizione Hadoop-Mapreduce per l'attività job\$11561661818238\$10004 e Failed Reduces**  

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

**Example Esecuzione di query sui log Hive nella partizione dei nodi per l'ID query 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 Esecuzione di query sui log ResourceManager nella partizione dei nodi per l'applicazione 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
```