Résoudre les problèmes dans Athena - Amazon Athena

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.

Résoudre les 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.

CREATETABLEEN TANT QUE SELECT (CTAS)

Des données dupliquées se produisent avec des instructions simultanées CTAS

Athena ne maintient pas de validation simultanée pour. CTAS Assurez-vous qu'il n'y a pas de double CTAS déclaration pour le même endroit au même moment. Même en cas d'échec d'une INSERT INTO instruction CTAS or, les données orphelines peuvent être laissées à l'emplacement indiqué dans l'instruction.

HIVE_TOO_MANY_OPEN_PARTITIONS

Lorsque vous utilisez une CTAS instruction pour créer une table contenant plus de 100 partitions, le message d'erreur HIVE_ _ _ TOO MANY OPEN _ peut s'afficher PARTITIONS : limite de 100 rédacteurs ouverts dépassée pour les partitions/compartiments. Pour contourner cette limitation, vous pouvez utiliser une CTAS instruction et une série d'INSERT INTOinstructions qui créent ou insèrent jusqu'à 100 partitions chacune. Pour de plus amples informations, veuillez consulter Utilisez 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 les fichiers que j'ai exclus du crawler AWS Glue

Athena ne reconnaît pas les modèles d'exclusion que vous spécifiez à un AWS Glue robot d'exploration. 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 :

HIVE_ _ CANNOT OPEN _ SPLIT : Erreur lors de l'ouverture de Hive Split 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 résoudre l'erreur « HIVE _ _ CANNOT OPEN _ SPLIT : Error opening Hive split s3://amzn-s3-demo-bucket/ : Slow down » dans Athena ? dans le AWS Knowledge Center.

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 : Incorrect fileSize 1234567 pour 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 AWS Glue robot n'a pas pu classer le format des données

  • Certaines propriétés de définition de AWS Glue table 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 ? dans le Centre de connaissances AWS ou regardez la vidéo du Centre de connaissances.

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écifier l'emplacement des résultats de la requête dans la rubrique Travailler avec les résultats des requêtes et les requêtes récentes.

Tables Linux Foundation Delta Lake

Schéma de table Delta Lake non synchronisé

Lorsque vous interrogez une table Delta Lake dont le schéma est obsolète, le message d'erreur suivant peut s'afficher : AWS Glue

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é AWS Glue après avoir été ajouté à Athena. Pour mettre à jour le schéma, effectuez l'une des étapes suivantes :

Requêtes fédérées

Délai d'attente pendant l'appel ListTableMetadata

Un appel au ListTableMetadataAPIdélai d'expiration du scan s'il y a beaucoup de tables dans la source de données, 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 ListTableMetadata la 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 StartQueryExecution pour 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 StartQueryExecutiongarantit qu'Athena exécute la requête de la manière la plus optimale, envisagez de l'utiliser StartQueryExecution comme alternative à. ListTableMetadata Les AWS CLI exemples suivants montrent StartQueryExecution comment utiliser au lieu d'ListTableMetadataobtenir 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 plus d'informations sur la résolution des problèmes liés aux requêtes fédérées, consultez Common_Problems dans la aws-athena-query-federation section awslabs/ de GitHub, ou consultez la documentation des connecteurs de source de données Athena individuels.

NULLou des erreurs de données incorrectes lors de la tentative de lecture JSON des données

NULLou des erreurs de données incorrectes lorsque vous essayez de lire JSON des données peuvent être dues à un certain nombre de causes. Pour identifier les lignes à l'origine des erreurs lorsque vous utilisez OpenX SerDe, définissez surignore.malformed.json. true Les enregistrements mal formés seront renvoyés sous la formeNULL. Pour plus d'informations, consultez l'article Je reçois des erreurs lorsque j'essaie de lire JSON des données dans Amazon Athena dans le AWS Knowledge Center ou regardez la vidéo du Knowledge Center.

HIVE_ BAD _ DATA : Erreur lors de l'analyse de la valeur du champ 0 : java.lang.String ne peut pas être converti en org.openx.data.jsonserde.json. JSONObject

Le SerDe OpenX JSON SerDe 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 JSON objet valide - JSONException : clé dupliquée

Cette erreur se produit lorsque vous utilisez Athena pour interroger AWS Config des ressources comportant plusieurs balises portant le même nom dans différents cas. 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 JSON SerDe bibliothèques. Pour plus d'informations, voir Comment résoudre « HIVE _ CURSOR _ ERROR : Row is not a valid JSON object - JSONException : Duplicate key » lors de la lecture de fichiers depuis AWS Config Athena ? dans le AWS Knowledge Center.

HIVE_ CURSOR _ ERROR messages joliment imprimés JSON

Les OpenX JSON SerDe bibliothèques Ruche JSON SerDe et s'attendent à ce que chaque JSON document se trouve sur une seule ligne de texte, aucun caractère de fin de ligne ne séparant les champs de l'enregistrement. Si le JSON texte est dans un joli format d'impression, vous pouvez recevoir un message d'erreur tel que HIVECURSOR_ _ ERROR : La ligne n'est pas un JSON objet valide ou HIVECURSOR_ _ ERROR JsonParseException end-of-input : Inattendu : marqueur de fermeture attendu OBJECT lorsque vous essayez d'interroger la table après l'avoir créée. Pour plus d'informations, consultez les fichiers de JSON données dans la SerDe documentation OpenX sur. GitHub

Plusieurs JSON enregistrements renvoient une valeur SELECT COUNT de 1

Si vous utilisez le SerDe OpenX JSON SerDe, assurez-vous que les registres sont séparés par un caractère de saut de ligne. Pour plus d'informations, consultez La SELECT COUNT requête dans Amazon Athena ne renvoie qu'un seul enregistrement, même si le JSON fichier d'entrée contient plusieurs enregistrements dans le AWS Knowledge Center.

Impossible d'interroger une table créée par un AWS Glue robot d'exploration qui utilise un classificateur personnalisé JSON

Le moteur Athena ne prend pas en charge les classificateurs personnalisés JSON. Pour contourner ce problème, créez une nouvelle table sans le classificateur personnalisé. Pour transformer leJSON, vous pouvez utiliser CTAS ou créer une vue. Par exemple, si vous travaillez avec des tableaux, vous pouvez utiliser l'UNNESToption pour aplatir le. JSON Une autre option consiste à utiliser une AWS Glue ETL tâche prenant en charge le classificateur personnalisé, à convertir les données en parquet dans Amazon S3, puis à les interroger dans Athena.

MSCK REPAIR TABLE

Pour plus d'informations sur les problèmes MSCK REPAIR TABLE connexes, consultez les Résolution des problèmes sections Considérations et restrictions et de la MSCK REPAIR TABLE page.

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 plus d'informations, consultez Comment résoudre l'erreur « Impossible de vérifier/créer un compartiment de sortie » dans Amazon Athena ? dans le AWS Knowledge Center.

TIMESTAMPle résultat est vide

Athena nécessite le format JavaTIMESTAMP. Pour plus d'informations, consultez Lorsque j'interroge une table dans Amazon Athena, le TIMESTAMP résultat est vide dans le centre de AWS connaissances.

Stockez le résultat de la requête Athena dans un format autre que CSV

Par défaut, Athena affiche les fichiers au CSV format uniquement. 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, veuillez consulter UNLOAD. Vous pouvez également utiliser une CTAS requête qui utilise la propriété format table pour configurer le format de sortie. Au contraireUNLOAD, la CTAS technique nécessite la création d'une table. Pour plus d'informations, voir Comment puis-je stocker le résultat d'une requête Athena dans un format autre que CSV le format compressé ? dans le AWS Knowledge Center.

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écifier l'emplacement des résultats de la requête.

Problèmes liés à Parquet

org.apache.parquet.io. GroupColumnL'IO ne peut pas être converti vers 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'ALTER TABLE SET TBLPROPERTIESinstruction CREATE TABLE or pour définir la SerDe parquet.ignore.statistics propriété Parquet surtrue, comme dans les exemples suivants.

CREATETABLEexemple

... ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' WITH SERDEPROPERTIES ('parquet.ignore.statistics'='true') STORED AS PARQUET ...

ALTERTABLEexemple

ALTER TABLE ... SET TBLPROPERTIES ('parquet.ignore.statistics'='true')

Pour plus d'informations sur le Parquet Hive SerDe, consultezParquet SerDe.

Problèmes de partitionnement

MSCKREPAIRTABLEne supprime pas les partitions périmées

Si vous supprimez une partition manuellement dans Amazon S3 puis que vous l'exécutez MSCK REPAIRTABLE, vous pouvez recevoir le message d'erreur Partitions manquantes dans le système de fichiers. Cela se produit car les partitions périmées MSCK REPAIR TABLE ne sont pas supprimées des métadonnées des tables. 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.

MSCKREPAIRTABLEéchec

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.

MSCKREPAIRTABLEdétecte les partitions mais ne les ajoute pas AWS Glue

Ce problème peut se produire si un chemin Amazon S3 est écrit en majuscules plutôt qu'en minuscules ou si une IAM politique n'autorise pas l'glue:BatchCreatePartitionaction. Pour plus d'informations, consultez la section MSCKREPAIRTABLEdétecte les partitions dans Athena mais ne les ajoute pas AWS Glue Data Catalog dans le AWS Knowledge Center.

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.

PARTITIONBY ne prend pas en charge le BIGINT type

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 la plage de temps correspond à la 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 la range table avec un tiret au lieu d'une virgule produit une erreur du type INVALID _ TABLE _ PROPERTY : Pour la chaîne de saisie : »number-number«. Assurez-vous que les valeurs de plage sont séparées par une virgule et non par un trait d'union. Pour de plus amples informations, veuillez consulter Type d'entier.

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. Vérifiez comment vos partitions sont définies dans AWS Glue.

HIVE_PARTITION_SCHEMA_MISMATCH

Si le schéma d'une partition est différent de celui de la table, une requête peut échouer avec le message d'erreur HIVE_ PARTITION _ SCHEMA _ MISMATCH.

Pour chaque table du catalogue de AWS Glue données comportant 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 AWS Glue robot d'exploration en fonction de l'échantillon de données qu'il lit dans 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.

SemanticException la table 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 Comment puis-je résoudre l'erreur « FAILED : la SemanticException table n'est pas partitionnée mais la spécification de partition existe » dans Athena ? dans le AWS Knowledge Center.

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 partition_value_$folder$ sont créés dans Simple Storage Service (Amazon S3). Vous devez supprimer ces fichiers manuellement.

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 solutions possibles, consultez la section J'ai créé une table dans Amazon Athena avec des partitions définies, mais lorsque j'interroge la table, aucun enregistrement n'est renvoyé dans le AWS Knowledge Center.

Voir aussi 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é) dans le centre de connaissances AWS .

Accès refusé avec code d'état : erreur 403 lors de l'exécution de DDL requêtes sur des données chiffrées dans Amazon S3

À quel moment vous pouvez recevoir le message d'erreur Accès refusé (service : Amazon S3 ; code d'état : 403 ; code d'erreur : AccessDenied ; ID de demande : <request_id>) si les conditions suivantes sont remplies :

  1. Vous exécutez une DDL requête du type ALTER TABLE ADD PARTITION ouMSCK REPAIR TABLE.

  2. Vous avez un compartiment dont le chiffrement par défaut est configuré pour utiliser SSE-S3.

  3. Le compartiment a également une politique de compartiment comme la suivante qui force les demandes PutObject à spécifier les en-têtes PUT "s3:x-amz-server-side-encryption": "true" etd "s3:x-amz-server-side-encryption": "AES256".

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::<resource-name>/*", "Condition": { "Null": { "s3:x-amz-server-side-encryption": "true" } } }, { "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::<resource-name>/*", "Condition": { "StringNotEquals": { "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 rédigés par un autre compte Service AWS et que le second compte est le propriétaire du compartiment mais ne possède pas les objets du compartiment. Pour plus d'informations, consultez l'exception Amazon S3 « accès refusé avec le code de statut : 403 » dans Amazon Athena lorsque j'interroge un bucket dans un autre compte dansAWS le Knowledge Center ou que je regarde la vidéo du Knowledge Center.

Utilisez les informations d'identification du IAM rôle pour vous connecter au pilote Athena JDBC

Vous pouvez récupérer les informations d'identification temporaires d'un rôle pour authentifier la JDBCconnexion à Athena. Les informations d'identification temporaires ont une durée de vie maximale de 12 heures. Pour plus d'informations, consultez Comment puis-je utiliser les informations d'identification de mon IAM rôle ou passer à un autre IAM rôle lorsque je me connecte à Athéna à l'aide du pilote ? JDBC dans le AWS Knowledge Center.

Problèmes de syntaxe des requêtes

FAILED: NullPointerException le nom est nul

Si vous utilisez l' AWS Glue CreateTableAPIopération ou le AWS CloudFormation AWS::Glue::Tablemodèle pour créer une table à utiliser dans Athena sans spécifier la TableType propriété, puis si vous exécutez une DDL requête du type SHOW CREATE TABLE ouMSCK REPAIR TABLE, vous pouvez recevoir le message d'erreur suivant FAILED: Le NullPointerException nom est nul.

Pour résoudre l'erreur, spécifiez une valeur pour l'TableInputTableTypeattribut dans le cadre de l' AWS Glue CreateTableAPIappel ou du AWS CloudFormation modèle. Parmi les valeurs possibles pour TableType figurent EXTERNAL_TABLE ou VIRTUAL_VIEW.

Cette exigence s'applique uniquement lorsque vous créez une table à l'aide de l' AWS Glue CreateTableAPIopération ou du AWS::Glue::Table modèle. Si vous créez une table pour Athena à l'aide d'une DDL instruction ou d'un AWS Glue robot de recherche, la TableType propriété est définie automatiquement pour vous.

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 ? dans le Centre de connaissances AWS .

GENERIC_ INTERNAL _ ERROR exceptions

Les exceptions GENERIC_INTERNAL_ERROR peuvent avoir plusieurs causes, notamment les suivantes :

  • GENERIC_ INTERNAL _ ERROR : Null — Cette exception peut s'afficher dans 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 inexacte.

  • GENERIC_ INTERNAL _ ERROR : Le générateur parent est nul. Cette exception peut s'afficher lorsque vous interrogez une table contenant des colonnes de type array de données et que vous utilisez la bibliothèque O penCSVSer De. Le penCSVSerde format O ne prend pas en charge le type de array données.

  • GENERIC_ INTERNAL _ ERROR : la valeur dépasse MAX _ INT — Cette exception peut se produire lorsque la colonne de données source est définie avec le type de données INT et possède une valeur numérique supérieure à 2 147 483 647.

  • GENERIC_ INTERNAL _ ERROR : la valeur dépasse MAX _ BYTE — Cette exception peut se produire lorsque la colonne de données source possède une valeur numérique dépassant la taille autorisée pour le type de données. BYTE Le type de données BYTE est équivalent à TINYINT. TINYINT est 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 : Le nombre de valeurs de partition ne correspond pas au nombre de filtres. Cette exception peut s'afficher si vos partitions ne sont pas cohé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 obtenir des informations plus détaillées sur chacune de ces erreurs, consultez Comment résoudre l'erreur « GENERIC _ INTERNAL _ ERROR » lorsque j'interroge une table dans Amazon Athena ? dans le AWS Knowledge Center.

Le nombre de groupes correspondants ne correspond pas au nombre de colonnes

Cette erreur se produit lorsque vous utilisez l'CREATETABLEinstruction Régex SerDe in et que le nombre de groupes correspondants par regex ne correspond pas au nombre de colonnes que vous avez spécifié pour la table. Pour plus d'informations, consultez Comment résoudre l' RegexSerDe erreur « le nombre de groupes correspondants ne correspond pas au nombre de colonnes » dans Amazon Athena ? dans le AWS Knowledge Center.

queryString n'a pas satisfait à 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 ajustable. AWS Support vous ne pouvez pas augmenter le quota pour vous, mais vous pouvez contourner le problème en divisant les longues requêtes 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 ? dans le Centre de connaissances AWS .

SYNTAX_ ERROR : La colonne ne peut pas être résolue

Cette erreur peut se produire lorsque vous interrogez une table créée par un AWS Glue robot d'exploration à partir d'un CSV fichier codé en UTF -8 portant un repère d'ordre des octets ()BOM. AWS Glue ne les reconnaît pas BOMs 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 un 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 temporisation avec vos requêtes Athena, consultez CloudTrail vos journaux. Les requêtes peuvent expirer en raison de l'étranglement AWS Glue ou de la Lake Formation. APIs 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 le problème, vous pouvez consulter vos CloudTrail journaux avant de nous contacter AWS Support. Pour plus d’informations, consultez AWS CloudTrail Journaux de requêtes et Enregistrez les appels Amazon Athena API avec 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 le ListTableMetadataAPI, consultez. Délai d'attente pendant l'appel ListTableMetadata

Problèmes de limitation

Si vos requêtes dépassent les limites des services dépendants tels qu'Amazon S3,,, ou AWS KMS, AWS Glue,, AWS Lambda,, vous pouvez vous attendre aux messages suivants. 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: taux dépassé.
AWS KMS Vous avez dépassé le débit auquel vous pouvez appelerKMS. Réduisez la fréquence de vos appels.
AWS Lambda

Vitesse de transfert dépassée

TooManyRequestsException

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 Empêcher la régulation 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, voir Comment puis-je résoudre l'erreur « la vue est périmée ; elle doit être recréée » dans Athéna ? dans le AWS Knowledge Center.

Groupes de travail

Pour plus d'informations sur la résolution des problèmes liés aux groupes de travail, consultez Résoudre les erreurs des 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 AWS ressources suivantes peuvent également ê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 vous continuez à rencontrer des problèmes après avoir essayé les suggestions de cette page, contactez AWS Support (dans le AWS Management Console, cliquez sur Support, Centre de support) ou posez une question sur AWS Re:post en utilisant le tag Amazon Athena.