Correction des erreurs de table
Les informations fournies dans cette section vous aideront à corriger les erreurs de table dans Athena for Spark.
Impossible de créer une erreur de chemin lors de la création d'une table
Message d'erreur : IllegalArgumentException: Cannot create a path from an empty string. (IllegalArgumentException : impossible de créer un chemin à partir d'une chaîne vide.)
Cause : Cette erreur peut se produire lorsque vous utilisez Apache Spark dans Athena pour créer une table dans une base de données AWS Glue et que la base de données possède une propriété LOCATION vide.
Solution suggérée : pour plus d'informations et de solutions, voir Exception d'argument non valide lors de la création d'une table.
AccessDeniedException lors de l'interrogation de tables AWS Glue
Message d'erreur : pyspark.sql.utils.AnalysisException: Unable to verify existence of default database: com.amazonaws.services.glue.model.AccessDeniedException: User: arn:aws:sts:: (pyspark.sql.utils.AnalysisException : Impossible de vérifier l'existence de la base de données par défaut : com.amazonaws.services.glue.model.AccessDeniedException : Utilisateur : arn:aws:sts::aws-account-id:assumed-role/AWSAthenaSparkExecutionRole-unique-identifier/AthenaExecutor-unique-identifier n'est pas autorisé à exécuter : glue:GetDatabase sur la ressource : arn:aws:glue:aws-region:aws-account-id:catalog, car aucune politique basée sur l'identité n'autorise l'action glue:GetDatabase [service : AWSGlue ; code d'état : 400 ; code d'erreur : AccessDeniedException ; ID de la requête : request-id ; Proxy : null])aws-account-id:assumed-role/AWSAthenaSparkExecutionRole-unique-identifier/AthenaExecutor-unique-identifier is not authorized to perform: glue:GetDatabase on resource: arn:aws:glue:aws-region:aws-account-id:catalog because no identity-based policy allows the glue:GetDatabase action (Service: AWSGlue; Status Code: 400; Error Code: AccessDeniedException; Request ID: request-id; Proxy: null)
Cause : le rôle d'exécution de votre groupe de travail compatible avec Spark n'a pas les autorisations nécessaires pour accéder aux ressources AWS Glue.
Solution suggérée : pour résoudre ce problème, accordez à votre rôle d'exécution l'accès aux ressources AWS Glue, puis modifiez votre politique de compartiment Amazon S3 pour accorder l'accès à votre rôle d'exécution.
La procédure suivante décrit de manière plus détaillée ces étapes.
Accorder à votre rôle d'exécution l'accès aux ressources AWS Glue
Ouvrez la console Athena à l’adresse https://console.aws.amazon.com/athena/
. Si le panneau de navigation de la console n'est pas visible, choisissez le menu d'extension sur la gauche.
-
Dans le panneau de navigation de la console Athena, choisissez Workgroups (Groupes de travail).
-
Sur la page Workgroups (Groupes de travail), choisissez le lien du groupe de travail à consulter.
-
Sur la page Overview Details (Présentation détaillée) du groupe de travail, cliquez sur le lien Role ARN (ARN de rôle). Le lien ouvre le rôle d'exécution Spark dans la console IAM.
-
Dans la section Permissions policies (Politiques d'autorisations), choisissez le nom de la politique de rôle liée.
-
Choisissez Edit policy (Modifier une politique), puis choisissez JSON.
-
Ajoutez l'accès AWS Glue au rôle. En général, vous ajoutez des autorisations pour les actions
glue:GetDatabaseetglue:GetTable. Pour plus d'informations sur la configuration des rôles IAM, voir Ajout et suppression d'autorisations basées sur l'identité IAM dans le Guide de l'utilisateur IAM. -
Choisissez Review policy (Examiner une stratégie), puis Save changes (Enregistrer les modifications).
-
Modifiez la politique de votre compartiment Amazon S3 pour accorder l'accès au rôle d'exécution. Notez que vous devez accorder au rôle l'accès à la fois au compartiment et aux objets qu'il contient. Pour les étapes, voir Ajout d'une politique de compartiment à l'aide de la console Amazon S3 dans le Guide de l'utilisateur Amazon Simple Storage Service.