Pourquoi ma requête MSCK REPAIR TABLE n’ajoute-t-elle pas de partitions au catalogue de données AWS Glue ?

Lecture de 3 minute(s)
0

Lorsque j’exécute une requête MSCK REPAIR TABLE, Amazon Athena renvoie une liste de partitions. Pourtant, Athena ne parvient pas à ajouter les partitions à la table du catalogue de données AWS Glue.

Brève description

Voici les raisons les plus fréquentes qui empêchent Athena d’ajouter des partitions aux tables du catalogue de données :

  • L’utilisateur ou le rôle de gestion des identités et des accès AWS (AWS IAM) ne dispose pas de politique autorisant l’action Glue:BatchCreatePartition.
  • Le chemin Amazon Simple Storage Service (Amazon S3) est en casse mixte et non en minuscules.
  • Les partitions ne respectent pas le format de style Hive, year=2023/month=01/day=01. Au lieu de cela, les partitions sont au format de style non Hive, /2023/01/01/.

Solution

Autoriser Glue:BatchCreatePartition dans la politique IAM

Vérifiez les politiques IAM associées à l’utilisateur ou au rôle utilisé pour exécuter MSCK REPAIR TABLE. Lorsque vous utilisez le catalogue de données 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 métastore. Pour voir un exemple de politique IAM qui autorise l’action glue:BatchCreatePartition, consultez la politique gérée par AWS : AmazonAthenaFullAccess.

Passez le chemin Amazon S3 en minuscules

Pour que MSCK REPAIR TABLE ajoute les partitions au catalogue de données, le nom du chemin Amazon S3 doit être en minuscules.

Par exemple, si le chemin Amazon S3 est en casse mixte, userId, les partitions suivantes ne sont pas ajoutées au catalogue de données :

  • 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 userid en minuscules :

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

Exécutez la commande ALTER TABLE ADD PARTITION

Exécutez la commande ALTER TABLE ADD PARTITION afin d’ajouter des partitions à la table glue pour les données partitionnées qui sont de style Hive ou non.

La clause LOCATION est nécessaire pour les données partitionnées qui ne sont pas de style Hive. Veillez à inclure le chemin Amazon S3 complet comme préfixe qui contient les données de partition :

ALTER TABLE orders ADD

PARTITION (year = '2023', month = '01', day ='01')
LOCATION 's3://mystorage/path/to/test/'

PARTITION (year = '2023', month = '01', day ='02')
LOCATION 's3://mystorage/path/to/test/';

Informations complémentaires

Partitionnement des données dans Athena

Actions, ressources et clés de condition pour Amazon Athena

Actions, ressources et clés de condition pour Amazon Glue

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an