J'ai exécuté une requête dans Amazon Athena et elle a échoué avec le message d'erreur « Query Timeout ».
Brève description
Vous pouvez recevoir des erreurs d’expiration de requête ou des requêtes qui s'exécutent lentement lorsque le délai d’expiration des requêtes DML est dépassé.
Résolution
Suivez ces bonnes pratiques pour optimiser vos requêtes et éviter les erreurs de délai d’attente.
Réduire la durée d'exécution de la requête depuis Athena
Dans Athena, vous pouvez prendre les mesures suivantes pour réduire le temps d'exécution de la requête :
Augmenter le temps d'exécution des requêtes pour Amazon Athena
Lorsque vous importez des données d'Athena vers Amazon Quick Sight SPICE, vous pouvez recevoir des erreurs d’expiration de la requête car la requête DML atteint son temps d'exécution maximal.
Pour résoudre ce problème :
- Consultez votre historique de requête Athena pour trouver la requête générée par Quick Sight.
- Vérifiez pendant combien de temps la requête s'est exécutée avant d'échouer.
- Suivez les étapes de la section précédente « Réduire la durée d'exécution de la requête depuis Athena » et réexécutez la requête. Si cela ne résout pas le problème de requête, passez à l'étape 4.
- Si la durée est proche du quota d'expiration maximal des requêtes DML en minutes, augmentez le quota de service.
Pour plus d'informations sur les quotas de service et pour demander une augmentation de quota, consultez la section Quotas de service.
Configurer les notifications en cas d’expiration des requêtes Athena
Pour recevoir une notification pour les requêtes qui arrivent à expiration et qui échouent, utilisez une règle d'événement Amazon CloudWatch pour capturer l'événement. Puis, utilisez Amazon Simple Notification Service (Amazon SNS) pour configurer les notifications.
Pour obtenir des instructions, consultez la section Comment générer des notifications en cas d'expiration d'une requête Athena ?
Requêtes relatives aux journaux d'accès Amazon S3
Si vous exécutez des requêtes pour les journaux d'accès à Amazon Simple Storage Service (Amazon S3) et que le délai de la requête expire, vous pouvez partitionner les données S3. Utilisez une tâche ETL AWS Glue pour partitionner vos données Amazon S3. Puis, exécutez les requêtes Athena sur des partitions limitées.
Pour obtenir des instructions, consultez la section Comment utiliser un journal d'accès Amazon S3 partitionné pour empêcher l'expiration d'une requête Athena ?
Requêtes de données CloudTrail
Si vous utilisez Athena pour interroger les données AWS CloudTrail, l'exécution des requêtes peut être longue ou prendre du temps. En effet, la taille des journaux CloudTrail peut augmenter au fil du temps, même si vous partitionnez la table CloudTrail afin de réduire le temps d'exécution des requêtes.
Utilisez la projection de partition pour créer manuellement une table CloudTrail. Cela permet à Athena de calculer de façon dynamique la valeur des tables CloudTrail, ce qui réduit le temps d'exécution des requêtes. Avec la projection de partition, il n’est pas nécessaire de gérer les partitions car les valeurs et les emplacements des partitions sont calculés à partir de la configuration.
Pour obtenir des instructions, consultez la section Comment utiliser la projection de partition pour créer des tables CloudTrail pour les requêtes Athena ?
Utiliser des requêtes CTAS
Une requête A CREATE TABLE AS SELECT (CTAS) crée une nouvelle table dans Athena à partir des résultats d'une instruction SELECT d'une autre requête. CTAS crée des tables à partir des résultats des requêtes en une seule étape, ce qui facilite le travail avec des ensembles de données brutes. Les requêtes CTAS améliorent également les performances des requêtes et réduisent les coûts des requêtes.
Pour des exemples, consultez la section Exemples de requêtes CTAS.
Pour plus d'informations, consultez la section Comment définir le nombre ou la taille des fichiers lorsque j'exécute une requête CTAS dans Athena ?
Utiliser les instructions EXPLAIN et EXPLAIN ANALYZE
Utilisez EXPLAIN et EXPLAIN ANALYZE dans Athena pour les requêtes complexes. L'instruction EXPLAIN permet d'optimiser les requêtes en affinant les instructions SQL et en vérifiant l'élagage des partitions.
Assurez-vous de vérifier les considérations et les limitations à l'aide des instructions EXPLAIN et EXPLAIN ANALYZE.
Pour plus d'informations, consultez les exemples d'instructions EXPLAIN.
Informations connexes
10 conseils pour optimiser les performances d'Amazon Athena
Comment puis-je utiliser les résultats d'une requête Amazon Athena dans une autre requête ?