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.
Rubriques
- CREATETABLEEN TANT QUE SELECT (CTAS)
- Problèmes de fichiers de données
- Tables Linux Foundation Delta Lake
- Requêtes fédérées
- JSONerreurs associées
- MSCK REPAIR TABLE
- Problèmes de sortie
- Problèmes liés à Parquet
- Problèmes de partitionnement
- Autorisations
- Problèmes de syntaxe des requêtes
- Problèmes de délai d'expiration des requêtes
- Problèmes de limitation
- Vues
- Groupes de travail
- Ressources supplémentaires
- Catalogue d'erreurs Athena
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 INTO
instructions 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 :
-
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 des suggestions de solutions, consultez la section Ma requête Amazon Athena échoue avec l'erreur « HIVE _ BAD _ DATA : Erreur lors de l'analyse de la valeur du champ x : Pour la chaîne de saisie : « 12312845691"
» dans le Knowledge Center. 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
string
et utiliser ensuiteCAST
pour convertir le champ dans une requête en fournissant une valeur par défaut de0
pour les valeurs nulles. Pour plus d'informations, voir Lorsque je demande CSV des données dans Athena, je reçois l'erreur « HIVE _ BAD _ DATA : Erreur lors de l'analyse de la valeur du champ » pour le champ x : Pour la chaîne de saisie : «" »dans le AWS centre de connaissances.
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
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 ?
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 :
-
Entrez AWS Glue, lancez le AWS Glue crawler.
-
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'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'utiliserStartQueryExecution
comme alternative à.ListTableMetadata
Les AWS CLI exemples suivants montrentStartQueryExecution
comment utiliser au lieu d'ListTableMetadata
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.
JSONerreurs associées
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
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
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
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
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
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
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é ?
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:BatchCreatePartition
action. Pour plus d'informations, consultez la section MSCKREPAIRTABLEdétecte les partitions dans Athena mais ne les ajoute pas AWS Glue Data Catalog dans le
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 : »
. 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.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. 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
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 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é
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é)
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 :
si les conditions suivantes sont remplies :<request_id>
)
-
Vous exécutez une DDL requête du type
ALTER TABLE ADD PARTITION
ouMSCK 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"
.{ "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 dans
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
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::Table
modè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'TableInputTableType
attribut dans le cadre de l' AWS Glue CreateTable
APIappel 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
CreateTable
APIopé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 ?
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 dearray
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éesBYTE
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
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
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 ?
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 ListTableMetadata
API, 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 |
|
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 ?
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