Résolution des problèmes dans Athena
L'équipe d'Athena a rassemblé les informations suivantes de résolution de problèmes à partir des problèmes des clients. Bien qu'elles ne soient pas exhaustives, elles comprennent des conseils concernant certains problèmes courants de performances, de délais d'attente et de manque de mémoire.
Rubriques
CREATE TABLE AS SELECT (CTAS)
Il y a duplication des données en cas d'instructions CTAS simultanées
Athena ne maintient pas la validation simultanée pour CTAS. Assurez-vous qu'il n'y a pas d'instruction CTAS dupliquée pour le même emplacement au même moment. Même si une instruction CTAS ou INSERT INTO échoue, les données orphelines peuvent être laissées dans l'emplacement de données spécifié dans l'instruction.
HIVE_TOO_MANY_OPEN_PARTITIONS
Lorsque vous utilisez une instruction CTAS pour créer une table comportant plus de 100 partitions, l'erreur HIVE_TOO_MANY_OPEN_PARTITIONS: Exceeded limit of 100 open writers for partitions/buckets (Dépassement de la limite de 100 rédacteurs ouverts pour les partitions/compartiments) peut s'afficher. Pour contourner ces limitations, vous pouvez utiliser une instruction CTAS et une série d'instructions INSERT INTO qui créent ou insèrent jusqu'à 100 partitions chacune. Pour de plus amples informations, consultez Utilisation de CTAS et INSERT INTO pour contourner la limite de 100 partitions.
Problèmes de fichiers de données
Athena ne peut pas lire les fichiers cachés
Athena traite les fichiers sources qui commencent par un trait de soulignement (_) ou un point (.) comme étant cachés. Pour contourner cette limitation, renommez les fichiers.
Athena lit des fichiers que j'ai exclus du Crawler AWS Glue
Athena ne reconnaît pas les modèles d'exclusion que vous spécifiez à un Crawler AWS Glue. Par exemple, si vous disposez d'un compartiment Simple Storage Service (Amazon S3) contenant à la fois des fichiers .csv et .json et que vous excluez les fichiers .json du Crawler, Athena interroge les deux groupes de fichiers. Pour éviter cela, placez les fichiers que vous voulez exclure dans un autre emplacement.
HIVE_BAD_DATA : erreur lors de l'analyse de la valeur du champ
Cette erreur peut se produire dans les cas suivants :
-
Le type de données défini dans la table ne correspond pas aux données sources, ou un seul champ contient différents types de données. Pour les résolutions suggérées, consultez la rubrique Ma requête Amazon Athena échoue avec l'erreur « HIVE_BAD_DATA: Error parsing field value for field x: For input string: "12312845691" » (HIVE_BAD_DATA : erreur d'analyse de la valeur du champ x : pour la chaîne d'entrée : "12312845691")
dans le Centre de connaissances AWS. -
Des valeurs nulles sont présentes dans un champ de type entier. Une solution consiste à créer la colonne avec les valeurs nulles en tant que
stringet utiliser ensuiteCASTpour convertir le champ dans une requête en fournissant une valeur par défaut de0pour les valeurs nulles. Pour plus d'informations, consultez la rubrique Lorsque j'interroge des données CSV dans Athena, je reçois l'erreur « HIVE_BAD_DATA: Error parsing field value '' for field x: For input string: " » (HIVE_BAD_DATA : erreur d'analyse de la valeur du champ '' pour le champ x : pour la chaîne d'entrée : ")dans le Centre de connaissances AWS.
HIVE_CANNOT_OPEN_SPLIT : erreur lors de l’ouverture du fractionnement Hive s3://amzn-s3-demo-bucket
Cette erreur peut se produire lorsque vous interrogez un préfixe de compartiment Simple Storage Service (Amazon S3) qui contient un grand nombre d'objets. Pour plus d’informations, consultez Comment puis-je corriger l’erreur de requête Athena « HIVE_CANNOT_OPEN_SPLIT » ?
HIVE_CURSOR_ERROR : com.amazonaws.services.s3.model.AmazonS3Exception : la clé spécifiée n'existe pas
Cette erreur se produit généralement lorsqu'un fichier est supprimé alors qu'une requête est en cours d'exécution. Vous pouvez soit réexécuter la requête, soit vérifier votre flux de travail pour voir si une autre tâche ou un autre processus modifie les fichiers pendant l'exécution de la requête.
HIVE_CURSOR_ERROR : fin inattendue du flux d'entrée
Ce message indique que le fichier est soit corrompu, soit vide. Vérifiez l'intégrité du fichier et exécutez à nouveau la requête.
HIVE_FILESYSTEM_ERROR : taille du fichier 1234567 incorrecte pour le fichier
Ce message peut survenir lorsqu'un fichier a été modifié entre la planification de la requête et son exécution. Cela se produit généralement lorsqu'un fichier sur Simple Storage Service (Amazon S3) est remplacé sur place (par exemple, un PUT est exécuté sur une clé où un objet existe déjà). Athena ne prend pas en charge la suppression ou le remplacement du contenu d'un fichier lorsqu'une requête est en cours d'exécution. Pour éviter cette erreur, planifiez des tâches qui écrasent ou suppriment des fichiers à des moments où les requêtes ne sont pas exécutées, ou qui n'écrivent des données que dans de nouveaux fichiers ou partitions.
HIVE_UNKNOWN_ERROR : impossible de créer le format d'entrée
Cette erreur peut être le résultat de problèmes tels que :
-
Le Crawler AWS Glue n'a pas été capable de classer le format des données
-
Certaines propriétés de définition de la table AWS Glue sont vides
-
Athena ne prend pas en charge le format de données des fichiers de Simple Storage Service (Amazon S3)
Pour plus d'informations, consultez la rubrique Comment résoudre l'erreur « impossible de créer le format d'entrée » dans Athena ?
L'emplacement S3 fourni pour enregistrer les résultats de votre requête n'est pas valide.
Assurez-vous que vous avez spécifié un emplacement S3 valide pour les résultats de votre requête. Pour plus d'informations, consultez Spécification d’un emplacement de résultats des requêtes dans la rubrique Utilisation des résultats des requêtes et des requêtes récentes.
Tables Linux Foundation Delta Lake
Schéma de table Delta Lake non synchronisé
Lorsque vous interrogez une table de Delta Lake dont le schéma dans AWS Glue est obsolète, le message d'erreur suivant peut s'afficher :
INVALID_GLUE_SCHEMA: Delta Lake table schema in Glue does not match the most recent schema of the Delta Lake transaction log. Please ensure that you have the correct schema defined in Glue.
Le schéma peut devenir obsolète s'il est modifié dans AWS Glue après avoir été ajouté à Athena. Pour mettre à jour le schéma, effectuez l'une des étapes suivantes :
-
Dans AWS Glue, lancez le crawler AWS Glue.
-
Dans Athéna, supprimez la table et créez-la à nouveau.
-
Ajoutez les colonnes manquantes manuellement, soit en utilisant l'instruction ALTER TABLE ADD COLUMNS dans Athena, soit en modifiant le schéma de table dans AWS Glue.
Requêtes fédérées
Délai d'expiration lors de l'appel de ListTableMetadata
Un appel à l'API ListTableMetadata peut expirer si la source de données contient de nombreuses tables, si la source de données est lente ou si le réseau est lent. Pour résoudre ce problème, essayez les étapes suivantes.
-
Vérifier le nombre de tables : si vous avez plus de 1 000 tables, essayez de réduire le nombre de tables. Pour obtenir la réponse
ListTableMetadatala plus rapide, nous vous recommandons d'avoir moins de 1 000 tables par catalogue. -
Vérifier la configuration Lambda – Il est essentiel de surveiller le comportement de la fonction Lambda. Lorsque vous utilisez des catalogues fédérés, veillez à examiner les journaux d'exécution de la fonction Lambda. Sur la base des résultats, ajustez les valeurs de mémoire et de délai d'expiration en conséquence. Pour identifier tout problème potentiel lié aux délais d'expiration, parcourez à nouveau votre configuration Lambda. Pour plus d'informations, consultez Configuration du délai d'expiration de la fonction (console) dans le Guide du développeur AWS Lambda.
-
Vérifier les journaux des sources de données fédérées – Examinez les journaux et les messages d'erreur de la source de données fédérée pour voir s'il existe des problèmes ou des erreurs. Les journaux peuvent fournir des informations précieuses sur la cause du délai d'expiration.
-
Utiliser
StartQueryExecutionpour récupérer les métadonnées : si vous avez plus de 1 000 tables, la récupération des métadonnées à l'aide de votre connecteur fédéré peut prendre plus de temps que prévu. Étant donné que la nature asynchrone de StartQueryExecution garantit qu'Athena exécute la requête de la manière la plus optimale, envisagez d'utiliserStartQueryExecutioncomme alternative àListTableMetadata. Les exemples AWS CLI suivants montrent commentStartQueryExecutionpeut être utilisée au lieu deListTableMetadatapour obtenir toutes les métadonnées des tables de votre catalogue de données.Commencez par exécuter une requête qui récupère toutes les tables, comme dans l'exemple suivant.
aws athena start-query-execution --region us-east-1 \ --query-string "SELECT table_name FROM information_schema.tables LIMIT 50" \ --work-group "your-work-group-name"Ensuite, récupérez les métadonnées d'une table individuelle, comme dans l'exemple suivant.
aws athena start-query-execution --region us-east-1 \ --query-string "SELECT * FROM information_schema.columns \ WHERE table_name = 'your-table-name' AND \ table_catalog = 'your-catalog-name'" \ --work-group "your-work-group-name"Le temps nécessaire pour obtenir les résultats dépend du nombre de tables de votre catalogue.
Pour des informations sur la résolution des problèmes liés aux requêtes fédérées, consultez Problèmes courants
Erreurs liées à JSON
Erreurs de données NULL ou incorrectes lors de la tentative de lecture de données JSON
Les erreurs de données NULL ou incorrectes lorsque vous essayez de lire des données JSON peuvent avoir plusieurs causes. Pour identifier les lignes qui causent des erreurs lorsque vous utilisez le SerDe OpenX, définissez ignore.malformed.json sur true. Les registres mal formés seront renvoyés comme NULL. Pour plus d'informations, consultez la rubrique Je reçois des erreurs lorsque j'essaie de lire des données JSON dans Amazon Athena
HIVE_BAD_DATA : erreur d'analyse de la valeur du champ 0 : java.lang.String ne peut pas être converti en org.openx.data.jsonserde.json.JSONObject
Le SerDe SerDe JSON OpenX renvoie cette erreur lorsqu'il ne parvient pas à analyser une colonne dans une requête Athena. Cela peut se produire si vous définissez une colonne comme un map ou un struct, mais que les données sous-jacentes sont en fait un string, un int ou un autre type primitif.
HIVE_CURSOR_ERROR : la ligne n'est pas un objet JSON valide - JSONException : clé dupliquée
Cette erreur se produit lorsque vous utilisez Athena pour interroger des ressources AWS Config qui ont plusieurs étiquettes avec le même nom dans des cas différents. La solution consiste à exécuter CREATE
TABLE en utilisant WITH SERDEPROPERTIES 'case.insensitive'='false' et à mapper les noms. Pour plus d'informations sur case.insensitive et le mappage, voir Bibliothèques SerDe JSON. Pour plus d'informations, consultez la rubrique Comment résoudre le problème « HIVE_CURSOR_ERROR: Row is not a valid JSON object - JSONException: Duplicate key » (HIVE_CURSOR_ERROR : la ligne n'est pas un objet JSON valide - JSONException : clé dupliquée) lors de la lecture de fichiers de AWS Config dans Athena ?
Messages HIVE_CURSOR_ERROR avec JSON formaté à des fins d'impression (pretty-printed)
Les bibliothèques SerDe JSON Hive et SerDe JSON OpenX nécessitent que chaque document JSON soit sur une seule ligne de texte, sans caractères de fin de ligne pour séparer les champs de l'enregistrement. Si le texte JSON est au format d'impression, vous pouvez recevoir un message d'erreur similaire à HIVE_CURSOR_ERROR : Row is not a valid JSON Object (La ligne n'est pas un JSON valide) ou HIVE_CURSOR_ERROR : JSONParseException : Unexpected end-of-input: expected close marker for OBJECT (Fin d'entrée inattendue : marqueur de fermeture attendu pour OBJECT) lorsque vous tentez d'interroger la table après l'avoir créée. Pour de plus amples informations, consultez la section Fichiers de données JSON
Plusieurs registres JSON renvoient un SELECT COUNT de 1
Si vous utilisez le SerDe SerDe JSON OpenX, assurez-vous que les registres sont séparés par un caractère de saut de ligne. Pour plus d'informations, consultez la rubrique La requête SELECT COUNT d'Amazon Athena ne renvoie qu'un seul registre alors que le fichier JSON d'entrée en contient plusieurs
Impossible d'interroger une table créée par un Crawler AWS Glue qui utilise un classificateur JSON personnalisé
Le moteur Athena ne prend pas en charge les classificateurs JSON personnalisés. Pour contourner ce problème, créez une nouvelle table sans le classificateur personnalisé. Pour transformer le JSON, vous pouvez utiliser CTAS ou créer une vue. Par exemple, si vous travaillez avec des tableaux, vous pouvez utiliser l'option UNNEST pour aplatir le JSON. Une autre option consiste à utiliser une tâche ETL AWS Glue qui prend en charge le classificateur personnalisé, à convertir les données en Parquet dans Simple Storage Service (Amazon S3), puis à les interroger dans Athena.
MSCK REPAIR TABLE
Pour plus d'informations sur les problèmes liés à MSCK REPARATION TABLE, consultez les sections Considérations et restrictions et Résolution des problèmes de la page MSCK REPAIR TABLE.
Problèmes de sortie
Impossible de vérifier/créer un compartiment de sortie
Cette erreur peut se produire si l'emplacement spécifié pour le résultat de la requête n'existe pas ou si les autorisations appropriées ne sont pas présentes. Pour de plus amples informations, consultez la rubrique Comment résoudre l'erreur « Impossible de vérifier/créer un compartiment de sortie » dans Amazon Athena ?
Le résultat TIMESTAMP est vide
Athena nécessite le format TIMESTAMP de Java. Pour plus d'informations, consultez la rubrique Lorsque j'interroge une table dans Amazon Athena, le résultat TIMESTAMP est vide
Stockage des résultats de la requête Athena dans un format autre que CSV
Par défaut, Athena n'affiche que des fichiers au format CSV. Pour afficher les résultats d'une requête SELECT dans un autre format, vous pouvez utiliser l'instruction UNLOAD. Pour de plus amples informations, consultez UNLOAD. Vous pouvez également utiliser une requête CTAS qui utilise la propriété de table format pour configurer le format de sortie. Contrairement à UNLOAD, la technique CTAS nécessite la création d'une table. Pour plus d'informations, consultez la rubrique Comment stocker les résultats d'une requête Athena dans un format autre que CSV, tel qu'un format compressé ?
L'emplacement S3 fourni pour enregistrer les résultats de votre requête n'est pas valide
Il est possible que vous receviez ce message d'erreur si l'emplacement de votre compartiment de sortie ne se trouve pas dans la même région que celle dans laquelle vous exécutez votre requête. Pour éviter cela, spécifiez l'emplacement des résultats de la requête dans la région dans laquelle vous exécutez la requête. Pour les étapes, consultez Spécification d’un emplacement de résultats des requêtes.
Problèmes liés à Parquet
org.apache.parquet.io.GroupColumnIO ne peut pas être converti en org.apache.parquet.io.PrimitiveColumnIO
Cette erreur est causée par une inadéquation du schéma Parquet. Une colonne qui a un type non primitif (par exemple, array) a été déclarée comme un type primitif (par exemple, string) dans AWS Glue. Pour résoudre ce problème, vérifiez le schéma de données dans les fichiers et comparez-le au schéma déclaré dans AWS Glue.
Problèmes de statistiques liés à Parquet
Lorsque vous lisez des données Parquet, vous pouvez recevoir des messages d'erreur tels que les suivants :
HIVE_CANNOT_OPEN_SPLIT: Index x out of bounds for length y HIVE_CURSOR_ERROR: Failed to read x bytes HIVE_CURSOR_ERROR: FailureException at Malformed input: offset=x HIVE_CURSOR_ERROR: FailureException at java.io.IOException: can not read class org.apache.parquet.format.PageHeader: Socket is closed by peer.
Pour contourner ce problème, utilisez l'instruction CREATE TABLE ou ALTER TABLE SET
TBLPROPERTIES pour définir la propriété parquet.ignore.statistics Parquet SerDe sur true, comme dans les exemples suivants.
Exemple CREATE TABLE
... ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' WITH SERDEPROPERTIES ('parquet.ignore.statistics'='true') STORED AS PARQUET ...
Exemple ALTER TABLE
ALTER TABLE ... SET TBLPROPERTIES ('parquet.ignore.statistics'='true')
Pour plus d'informations sur le Parquet SerDe Hive, consultez SerDe Parquet.
Problèmes de partitionnement
MSCK REPARATION TABLE ne supprime pas les partitions périmées
Si vous supprimez manuellement une partition dans Simple Storage Service (Amazon S3), puis exécutez MSCK REPAIR TABLE, il est possible que vous receviez le message d'erreur Partitions missing from filesystem (Partitions manquantes dans le système de fichiers). Cela se produit parce que MSCK REPAIR TABLE ne supprime pas les partitions périmées des métadonnées de la table. Utilisez ALTER TABLE DROP
PARTITION pour supprimer manuellement les partitions périmées. Pour plus d'informations, consultez la section « Résolution des problèmes » de la rubrique MSCK REPAIR TABLE.
Échec de MSCK REPAIR TABLE
Lorsqu'un grand nombre de partitions (par exemple, plus de 100 000) sont associées à une table particulière, MSCK REPAIR TABLE peut échouer en raison de limitations de mémoire. Pour contourner cette limite, utilisez ALTER TABLE ADD PARTITION à la place.
MSCK REPARATION TABLE détecte les partitions, mais ne les ajoute pas à AWS Glue
Ce problème peut se produire si un chemin d'accès Simple Storage Service (Amazon S3) est en majuscules au lieu de minuscules ou si une politique IAM n'autorise pas l'action glue:BatchCreatePartition. Pour plus d'informations, consultez la rubrique MSCK REPAIR TABLE détecte les partitions dans Athena mais ne les ajoute pas au AWS Glue Data Catalog
Les plages de projection des partitions avec le format de date jj-MM-aaaa-HH-mm-ss ou aaaa-MM-jj ne fonctionnent pas
Pour fonctionner correctement, le format de date doit être défini sur yyyy-MM-dd
HH:00:00. Pour plus d'informations, consultez l'article Dépassement de la capacité de la pile : la projection de partition Athena ne fonctionne pas comme prévu
PARTITION BY ne prend pas en charge le type BIGINT
Convertir le type de données en string et réessayer.
Pas de partitions significatives disponibles
Ce message d'erreur signifie généralement que les paramètres de la partition ont été corrompus. Pour résoudre ce problème, abandonnez la table et créez une table avec de nouvelles partitions.
La projection de partition ne fonctionne pas en conjonction avec les partitions de plage
Vérifiez que l'unité de plage de temps projection.<columnName>.interval.unit correspond au délimiteur des partitions. Par exemple, si les partitions sont délimitées par des jours, l'unité de plage des heures ne fonctionnera pas.
Erreur de projection de partition lorsque la plage est spécifiée par un tiret
La spécification de la propriété de table range avec un tiret au lieu d'une virgule produit une erreur du type INVALID_TABLE_PROPERTY : Pour la chaîne de saisie : « . Veillez à ce que les valeurs de la plage soient séparées par une virgule, et non par un tiret. Pour de plus amples informations, consultez Type d'entier.number-number »
HIVE_UNKNOWN_ERROR : impossible de créer le format d'entrée
Une ou plusieurs des partitions Glue sont déclarées dans un format différent, car chaque partition Glue a son propre format d'entrée spécifique de manière indépendante. Veuillez vérifier comment vos partitions sont définies dans AWS Glue.
HIVE_PARTITION_SCHEMA_MISMATCH
Si le schéma d'une partition diffère du schéma de la table, la requête peut échouer avec le message d'erreur HIVE_PARTITION_SCHEMA_MISMATCH.
Pour chaque table du catalogue de données AWS Glue qui possède des colonnes de partition, le schéma est stocké au niveau de la table et pour chaque partition individuelle de la table. Le schéma des partitions est renseigné par un Crawler AWS Glue en fonction de l'échantillon de données qu'il lit au sein de la partition.
Lorsqu'Athena exécute une requête, il valide le schéma de la table et le schéma de toute partition nécessaire à la requête. La validation compare les types de données des colonnes dans l'ordre et s'assure qu'ils correspondent pour les colonnes qui se chevauchent. Ceci empêche les opérations inattendues, telles que l'ajout ou la suppression de colonnes depuis le milieu d'une table. Si Athena détecte que le schéma d'une partition diffère du schéma de la table, Athena risque de ne pas pouvoir traiter la requête et échoue avec HIVE_PARTITION_SCHEMA_MISMATCH.
Il existe deux moyens de corriger ce problème. Tout d'abord, si les données ont été ajoutées accidentellement, vous pouvez supprimer les fichiers de données à l'origine de la différence de schéma, supprimer la partition et exécuter à nouveau le robot d'indexation sur les données. Deuxièmement, vous pouvez supprimer la partition individuelle, puis exécuter MSCK REPAIR dans Athena pour recréer la partition à l'aide du schéma de la table. Cette deuxième option fonctionne uniquement si vous êtes certain que le schéma appliqué continuera de lire les données correctement.
La table SemanticException n'est pas partitionnée, mais la spécification de partition existe
Cette erreur peut se produire lorsqu'aucune partition n'a été définie dans l'instruction CREATE
TABLE. Pour plus d'informations, consultez la rubrique Comment résoudre l'erreur « ÉCHEC : la table SemanticException n'est pas partitionnée, mais la spécification de partition existe » dans Athena ?
Fichiers _$folder$ zéro octet
Si vous exécutez une instruction ALTER TABLE ADD PARTITION et spécifiez par erreur une partition déjà existante et un emplacement Simple Storage Service (Amazon S3) incorrect, des fichiers d'emplacement zéro octet du format sont créés dans Simple Storage Service (Amazon S3). Vous devez supprimer ces fichiers manuellement.partition_value_$folder$
Pour éviter que cela ne se produise, utilisez la syntaxe ADD IF NOT EXISTS dans votre instruction ALTER TABLE ADD PARTITION comme suit :
ALTER TABLE table_name ADD IF NOT EXISTS PARTITIION […]
Aucun registre renvoyé par les données partitionnées
Ce problème peut se produire pour différentes raisons. Pour connaître les causes et les résolutions possibles, consultez la rubrique J'ai créé une table dans Amazon Athena avec des partitions définies, mais lorsque j'interroge la table, aucun registre n'est renvoyé
Consultez également . HIVE_TOO_MANY_OPEN_PARTITIONS.
Autorisations
Erreur d'accès refusé lors de l'interrogation de Simple Storage Service (Amazon S3)
Cela peut se produire lorsque vous n'avez pas l'autorisation de lire les données dans le compartiment, l'autorisation d'écrire dans le compartiment de résultats ou que le chemin d'accès Simple Storage Service (Amazon S3) contient un point de terminaison de région comme us-east-1.amazonaws.com. Pour plus d'informations, consultez la rubrique Lorsque j'exécute une requête Athena, je reçois une erreur « access denied » (Accès refusé)
Accès refusé avec le code d'état : erreur 403 lors de l'exécution de requêtes DDL sur des données chiffrées dans Simple Storage Service (Amazon S3)
Il est possible que vous receviez le message d'erreur Accès refusé (Service : Simple Storage Service (Amazon S3) ; Code d'état : 403 ; Code d'erreur : AccessDenied ; ID demande : si les conditions suivantes sont vraies :<request_id>)
-
Vous exécutez une requête DDL comme
ALTER TABLE ADD PARTITIONouMSCK REPAIR TABLE. -
Vous avez un compartiment dont le chiffrement par défaut est configuré pour utiliser
SSE-S3. -
Le compartiment a également une politique de compartiment comme la suivante qui force les demandes
PutObjectà spécifier les en-têtesPUT"s3:x-amz-server-side-encryption": "true"etd"s3:x-amz-server-side-encryption": "AES256".
Dans un cas comme celui-ci, la solution recommandée est de supprimer la politique de compartiment comme celle ci-dessus, étant donné que le chiffrement par défaut du compartiment est déjà présent.
Accès refusé avec le code d'état : 403 lors de l'interrogation d'un compartiment Simple Storage Service (Amazon S3) dans un autre compte
Cette erreur peut se produire lorsque vous essayez d'interroger des journaux écrits par un autre Service AWS et que le deuxième compte est propriétaire du compartiment mais n'est pas propriétaire des objets du compartiment. Pour plus d'informations, consultez la section Je reçois l'exception Simple Storage Service (Amazon S3) « access denied with status code: 403 » (Accès refusé avec le code d'état : 403) dans Amazon Athena lorsque je fais une requête sur un compartiment dans un autre compte
Utilisation des informations d'identification du rôle IAM pour la connexion au pilote JDBC Athena
Vous pouvez récupérer les informations d'identification temporaires d'un rôle pour authentifier la Connexion JDBC à Athena. Les informations d'identification temporaires ont une durée de vie maximale de 12 heures. Pour plus d'informations, consultez la rubrique Comment utiliser les informations d'identification de mon rôle IAM ou passer à un autre rôle IAM lors de la connexion à Athena à l'aide du pilote JDBC ?
Le descripteur de stockage de table requis n’est pas indiqué
Cela peut se produire lorsque vous tentez d’interroger ou d’afficher une table sur laquelle vous ne disposez pas des autorisations requises. Dans ce cas, il est recommandé d’accorder les autorisations DESCRIBE et SELECT sur les ressources via AWS Lake Formation. Si votre ressource est partagée entre plusieurs comptes, que la ressource d’origine se trouve dans le compte A et que vous souhaitez interroger une ressource liée dans le compte B, assurez-vous que votre rôle dispose de l’autorisation DESCRIBE sur la ressource d’origine dans le compte A et de l’autorisation SELECT sur la ressource liée dans le compte B.
Problèmes de syntaxe des requêtes
ÉCHEC : NullPointerException, nom nul
Si vous utilisez l'opération API AWS Glue CreateTable (Créer une table) ou le modèle CloudFormation AWS::Glue::Table pour créer une table à utiliser dans Athena sans spécifier la propriété TableType, puis exécutez une requête DDL comme SHOW CREATE TABLE ou MSCK REPAIR TABLE, il est possible que vous receviez le message d'erreur FAILED: NullPointerException Name is null (ÉCHEC : NullPointerException, nom nul).
Pour résoudre cette erreur, spécifiez une valeur pour l'attribut TableInput TableType dans le cadre de l'appel d'API AWS Glue CreateTable ou du modèle CloudFormation. Parmi les valeurs possibles pour TableType figurent EXTERNAL_TABLE ou VIRTUAL_VIEW.
Cette exigence s'applique uniquement lorsque vous créez un tableau à l'aide de l'opération API AWS Glue CreateTable ou du modèle AWS::Glue::Table. Si vous créez une table pour Athena en utilisant à l'aide d'une instruction DDL ou d'un crawler AWS Glue, la propriété TableType est définie pour vous automatiquement.
Fonction non enregistrée
Cette erreur se produit lorsque vous essayez d'utiliser une fonction qu'Athena ne prend pas en charge. Pour connaître la liste des fonctions prises en charge par Athena, consultezFonctions dans Amazon Athena ou exécutez l'instruction SHOW FUNCTIONS dans l'éditeur de requête. Vous pouvez également écrire votre propre fonction définie par l'utilisateur (UDF). Pour plus d'informations, consultez la rubrique Comment résoudre l'erreur de syntaxe « fonction non enregistrée » dans Athena ?
Exceptions GENERIC_INTERNAL_ERROR
GENERIC_INTERNAL_ERRORLes exceptions peuvent avoir plusieurs causes, notamment les suivantes :
-
GENERIC_INTERNAL_ERROR : NULL – Vous pouvez voir cette exception dans le cadre de l'une des conditions suivantes :
-
Vous avez une inadéquation de schéma entre le type de données d'une colonne dans la définition de table et le type de données réel du jeu de données.
-
Vous exécutez une requête
CREATE TABLE AS SELECT(CTAS) dont la syntaxe est imprécise.
-
-
GENERIC_INTERNAL_ERROR : parent builder is null (le constructeur parent est nul) – Cette exception peut s'afficher lorsque vous interrogez une table avec des colonnes de type de données
array, et vous utilisez la bibliothèque OpenCSVSerDe. Le format OpenCSVSerDe ne prend pas en charge le type de donnéesarray. -
GENERIC_INTERNAL_ERROR: Value exceeds MAX_INT (GENERIC_INTERNAL_ERROR : la valeur dépasse MAX_INT) : cette exception peut s'afficher lorsque la colonne de données source est définie avec le type de données
INTet a une valeur numérique supérieure à 2 147 483 647. -
GENERIC_INTERNAL_ERROR : Value exceeds MAX_BYTE (GENERIC_INTERNAL_ERROR : la valeur dépasse MAX_BYTE) : cette exception peut s'afficher lorsque la valeur numérique de la colonne de données source dépasse la taille autorisée pour le type de données
BYTE. Le type de donnéesBYTEest équivalent àTINYINT.TINYINTest un entier signé de 8 bits au format de complément à deux avec une valeur minimum de -128 et une valeur maximum de 127. -
GENERIC_INTERNAL_ERROR: Number of partition values does not match number of filters (GENERIC_INTERNAL_ERROR : le nombre de valeurs de partition ne correspond pas au nombre de filtres) : cette exception peut s'afficher si vous avez des partitions incohérentes sur les données Amazon Simple Storage Service (Amazon S3). Les partitions peuvent être incohérentes dans le cadre de l'une des conditions suivantes :
-
Les partitions sur Simple Storage Service (Amazon S3) ont changé (exemple : de nouvelles partitions ont été ajoutées).
-
Le nombre de colonnes de partition de la table ne correspond pas à celui des métadonnées de partition.
-
Pour en savoir plus sur chacune de ces erreurs, veuillez consulter la section Comment résoudre l'erreur « GENERIC_INTERNAL_ERROR » lorsque j'interroge une table dans Amazon Athena ?
Le nombre de groupes correspondants ne correspond pas au nombre de colonnes
Cette erreur se produit lorsque vous utilisez le SerDe SerDe Regex dans une instruction CREATE TABLE et que le nombre de groupes de correspondance regex ne correspond pas au nombre de colonnes que vous avez spécifié pour la table. Pour plus d'informations, consultez la rubrique Comment résoudre l'erreur RegexSerDe « number of matching groups doesn't match the number of columns » (Le nombre de groupes correspondants ne correspond pas au nombre de colonnes) dans Amazon Athena ?
queryString ne satisfait pas à la contrainte : le membre doit avoir une longueur inférieure ou égale à 262144
La longueur maximale de la chaîne de requête dans Athena (262 144 octets) n'est pas un quota réglable. AWS Support ne peut pas augmenter le quota pour vous, mais vous pouvez contourner le problème en divisant les requêtes longues en requêtes plus petites. Pour plus d'informations, consultez la rubrique Comment augmenter la longueur maximale de la chaîne de requête dans Athena ?
SYNTAX_ERROR : impossible de résoudre la colonne
Cette erreur peut se produire lorsque vous interrogez une table créée par un Crawler AWS Glue à partir d'un fichier CSV codé en UTF-8 qui comporte une marque d'ordre d'octet (BOM). AWS Glue ne reconnaît pas les BOM et les transforme en points d'interrogation, ce qu'Amazon Athena ne reconnaît pas. La solution consiste à supprimer le point d'interrogation dans Athena ou dans AWS Glue.
Trop d'arguments pour un appel de fonction
Dans la version 3 du moteur Athena, les fonctions ne peuvent pas comporter plus de 127 arguments. Cette limitation est intentionnelle. Si vous utilisez une fonction comportant plus de 127 paramètres, un message d'erreur semblable au suivant s'affiche :
TOO_MANY_ARGUMENTS : ligne .nnn:nn : trop d'arguments pour l'appel de fonction function_name()
Pour résoudre ce problème, utilisez moins de paramètres par appel de fonction.
Problèmes de délai d'expiration des requêtes
Si vous rencontrez des erreurs de délai d'expiration avec vos requêtes Athena, consultez vos journaux CloudTrail. Les requêtes peuvent expirer en raison de la limitation des API AWS Glue ou de celles de Lake Formation. Lorsque ces erreurs se produisent, les messages d'erreur correspondants peuvent indiquer un problème de délai d'expiration des requêtes plutôt qu'un problème de limitation. Pour résoudre ce problème, vous pouvez consulter vos journaux CloudTrail avant de contacter Support. Pour plus d'informations, consultez Interrogation des journaux AWS CloudTrail et Journalisation des appels d’API Amazon Athena à l’aide d’AWS CloudTrail.
Pour plus d'informations sur les problèmes de délai d'expiration des requêtes liées aux requêtes fédérées lorsque vous appelez l'API ListTableMetadata, veuillez consulter Délai d'expiration lors de l'appel de ListTableMetadata.
Problèmes de limitation
Si vos requêtes dépassent les limites des services dépendants tels que Simple Storage Service (Amazon S3), AWS KMS, AWS Glue ouAWS Lambda, les messages suivants peuvent être attendus. Pour résoudre ces problèmes, réduisez le nombre d'appels simultanés provenant du même compte.
| Service | Message d’erreur |
|---|---|
| AWS Glue | AWSGlueException : vitesse de transfert dépassée. |
| AWS KMS | Vous avez dépassé la vitesse de transfert à laquelle vous pouvez appeler KMS. Réduisez la fréquence de vos appels. |
| AWS Lambda |
|
| Simple Storage Service (Amazon S3) | Amazons3Exception : veuillez réduire la vitesse de transfert de votre demande. |
Pour plus d'informations sur les moyens d'empêcher la limitation d'Amazon S3 lorsque vous utilisez Athena, consultez Prévention de la limitation d’Amazon S3.
Vues
Les vues créées dans le shell Apache Hive ne fonctionnent pas dans Athena
En raison de leurs implémentations fondamentalement différentes, les vues créées dans le shell Apache Hive ne sont pas compatibles avec Athena. Pour résoudre ce problème, recréez les vues dans Athena.
La vue est périmée ; elle doit être recréée
Il est possible de recevoir cette erreur si la table qui sous-tend une vue a été modifiée ou supprimée. La résolution consiste à recréer la vue. Pour plus d'informations, consultez la rubrique Comment résoudre l'erreur « view is stale; it must be re-created » (La vue est périmée ; elle doit être recréée) dans Athena ?
Groupes de travail
Pour plus d'informations sur la résolution des problèmes liés aux groupes de travail, consultez Correction des erreurs liées aux groupes de travail.
Ressources supplémentaires
Les pages suivantes fournissent des informations supplémentaires pour la résolution des problèmes liés à Amazon Athena.
Les ressources AWS suivantes peuvent également vous être utiles :
La résolution des problèmes nécessite souvent une requête et une recherche itératives par un expert ou par une communauté d'assistants. Si le problème persiste après la mise en œuvre des solutions proposées sur cette page, contactez AWS Support (dans la AWS Management Console, cliquez sur Support, Centre de support) ou posez une question sur AWS re:Post