Correction des erreurs de table - Amazon Athena

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::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) (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])

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
  1. Ouvrez la console Athena à l’adresse https://console.aws.amazon.com/athena/.

  2. Si le panneau de navigation de la console n'est pas visible, choisissez le menu d'extension sur la gauche.

    Choisissez le menu d'expansion.
  3. Dans le panneau de navigation de la console Athena, choisissez Workgroups (Groupes de travail).

  4. Sur la page Workgroups (Groupes de travail), choisissez le lien du groupe de travail à consulter.

  5. 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.

  6. Dans la section Permissions policies (Politiques d'autorisations), choisissez le nom de la politique de rôle liée.

  7. Choisissez Edit policy (Modifier une politique), puis choisissez JSON.

  8. Ajoutez l'accès AWS Glue au rôle. En général, vous ajoutez des autorisations pour les actions glue:GetDatabase et glue: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.

  9. Choisissez Review policy (Examiner une stratégie), puis Save changes (Enregistrer les modifications).

  10. 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.