MSCK REPAIR TABLE détecte les partitions dans Athena, mais ne les ajoute pas au catalogue de données AWS Glue

Dernière mise à jour : 18/06/2020

Lorsque j'exécute MSCK REPAIR TABLE, Amazon Athena renvoie une liste de partitions, mais ne parvient pas à ajouter les partitions à la table dans le catalogue de données AWS Glue.

Brève description

Voici quelques causes courantes de cette erreur :

  • L'utilisateur ou le rôle AWS Identity and Access Management (IAM) n'a pas de politique autorisant l'action glue:BatchCreatePartition.
  • Le chemin Amazon Simple Storage Service (Amazon S3) est en casse camel et non pas en minuscules (par exemple, userId au lieu de userid).

Solution

Autoriser glue:BatchCreatePartition dans la politique IAM

Vérifiez les politiques IAM associées à l'utilisateur ou au rôle que vous utilisez pour exécuter MSCK REPAIR TABLE. Lorsque vous utilisez le catalogue de données AWS Glue avec Athena, la politique IAM doit autoriser l'action glue:BatchCreatePartition. Si la politique n'autorise pas cette action, Athena ne peut pas ajouter de partitions au metastore. Pour obtenir un exemple de politique IAM qui autorise l'action glue:BatchCreatePartition consultez Politique gérée AmazonAthenaFullAccess.

Mettre le chemin Amazon S3 en minuscules

Le nom du chemin Amazon S3 doit être en minuscules. Si le chemin est en casse camel, MSCK REPAIR TABLE n'ajoute pas les partitions au catalogue de données AWS Glue. Par exemple, si le chemin Amazon S3 est userId, les partitions suivantes ne sont pas ajoutées au catalogue de données AWS Glue :

  • s3://awsdoc-example-bucket/path/userId=1/
  • s3://awsdoc-example-bucket/path/userId=2/
  • s3://awsdoc-example-bucket/path/userId=3/

Pour résoudre ce problème, utilisez des minuscules au lieu de la casse camel :

  • s3://awsdoc-example-bucket/path/userid=1/
  • s3://awsdoc-example-bucket/path/userid=2/
  • s3://awsdoc-example-bucket/path/userid=3/