Pourquoi ma requête Athena n'a-t-elle pas renvoyé de résultats après avoir ajouté de nouvelles partitions ?

Lecture de 3 minute(s)
0

J'ai ajouté de nouvelles partitions à ma requête Amazon Athena mais celle-ci ne renvoie aucun résultat.

Résolution

Ce problème peut se produire si vous avez utilisé l'une des méthodes suivantes pour ajouter les nouvelles partitions :

Pour résoudre le problème, procédez comme suit en fonction de votre cas d'utilisation.

MSCK REPAIR TABLE

La commande MSCK REPAIR TABLE fonctionne uniquement avec les partitions de type HIVE, dont les chemins de données contiennent des paires clé-valeur connectées par des signes égaux. Par exemple, country=us/..., year=2021/month=01/day=26/..., et ainsi de suite.

En outre, la commande MSCK REPAIR TABLE peut ne pas permettre d'ajouter de nouvelles partitions, en particulier en cas de partitions volumineuses dans le compartiment Amazon Simple Storage Service (Amazon S3). Cela peut également entraîner des problèmes de performances et de temporisation car la commande MSCK REPAIR TABLE charge toutes les partitions de la plage de données. Par exemple, si les données existantes datent de 2020 et que les nouvelles données de partition datent de 2023, toutes les partitions de 2020 sont lues.

Pour ajouter des partitions qui ne sont pas de type Hive, exécutez la commande ALTER TABLE ADD PARTITION comme suit :

ALTER TABLE table_name ADD [IF NOT EXISTS]
  PARTITION
  (partition_col1_name = partition_col1_value
  [,partition_col2_name = partition_col2_value]
  [,...])
  [LOCATION 'location1']
  [PARTITION
  (partition_colA_name = partition_colA_value
  [,partition_colB_name = partition_colB_value
  [,...])]
  [LOCATION 'location2']
  [,...]

Projection de partition

Dans la projection de partition, les propriétés de la table sont définies lors de sa création. Assurez-vous que les propriétés de la table répondent aux spécifications requises, sinon la partition risque de ne pas être lue.

Utilisez la commande suivante pour répertorier les partitions de la table :

"SELECT * FROM 'table_name$partitions'"

Dans la sortie, vérifiez le format de données des partitions. Si des formats de date tels que l'année, le mois, le jour ou l'heure sont utilisés, ajoutez les propriétés de table nécessaires pour la plage, l'intervalle et les chiffres.

Pour plus d'informations, consultez la section Types pris en charge pour la projection de partition.

Catalogue de données AWS Glue ou console AWS Glue

Si vous avez utilisé le catalogue de données ou la console AWS Glue pour définir les colonnes de partition, vérifiez le type de données de partition. Le type de données de partition doit correspondre au type de données défini dans le compartiment S3.

Remarque : Il est recommandé d'utiliser des types de données cohérents avec le catalogue de données ou la console AWS Glue et le compartiment S3.

Informations connexes

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

Pourquoi est-ce que je n'obtiens aucun enregistrement lorsque j'interroge ma table Amazon Athena ?

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