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.
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.
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
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.
Exemple – Interrogation des journaux d'application application_1561661818238_0002 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;
Exemple – Interrogation de la partition hadoop-Mapreduce pour la tâche job_1561661818238_0004 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;
Exemple – 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;
Exemple – Interrogation des journaux resourcemanager dans la partition de nœud pour l'application 1567660019320_0001_01_000001
SELECT data,
"$PATH"
FROM "default"."mypartitionedemrlogs"
WHERE logtype='node'
AND regexp_like(data,'resourcemanager')
AND regexp_like(data,'1567660019320_0001_01_000001') limit 100