Erstellen und Abfragen einer Basistabelle basierend auf Amazon-EMR-Protokolldateien
Im folgenden Beispiel wird die Basistabelle myemrlogs erstellt, die auf Protokolldateien basiert, die in s3://aws-logs- gespeichert sind. Der in den folgenden Beispielen verwendete Amazon-S3-Speicherort spiegelt das Muster des Standardprotokollspeicherorts für einen EMR-Cluster wider, der durch das Amazon-Web-Services-Konto 123456789012-us-west-2/elasticmapreduce/j-2ABCDE34F5GH6/elasticmapreduce/123456789012 in der Region us-west-2 erstellt wurde. Wenn Sie einen benutzerdefinierten Speicherort verwenden, lautet das Muster s3://amzn-s3-demo-bucket/ ClusterID.
Hinweise zum Erstellen einer partitionierten Tabelle zur potenziellen Verbesserung der Abfrageleistung und zur Verringerung der Datenübertragung finden Sie unter Erstellen und Abfragen einer partitionierten Tabelle basierend auf Amazon-EMR-Protokollen.
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'
Beispielabfragen
Die folgenden Beispielabfragen können für die im vorherigen Beispiel erstellte myemrlogs-Tabelle ausgeführt werden.
Beispiel – Abfrage von step-Protokollen nach Vorkommen von ERROR, WARN, INFO, EXCEPTION, FATAL oder 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;
Beispiel – Abfrage eines bestimmten Instance-Protokolls, i-00b3c0a839ece0a9c, nach ERROR, WARN, INFO, EXCEPTION, FATAL oder 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;
Beispiel – Abfrage von presto-Anwendungsprotokollen nach ERROR, WARN, INFO, EXCEPTION, FATAL oder 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;
Beispiel – Abfrage von Namenode-Anwendungsprotokollen nach ERROR, WARN, INFO, EXCEPTION, FATAL oder 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;
Beispiel – Abfrage aller Protokolle nach Datum und Stunde für ERROR, WARN, INFO, EXCEPTION, FATAL oder 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;