Pourquoi la requête SELECT COUNT dans Amazon Athena renvoie-t-elle un seul enregistrement alors que le fichier JSON d'entrée contient plusieurs enregistrements ?

Dernière mise à jour : 25/08/2022

Lorsque j'exécute SELECT COUNT(*) FROM TABLE, j'obtiens la sortie « 1 », mais le fichier d'entrée comporte plusieurs enregistrements JSON. J'ai utilisé org.openx.data.jsonserde.JsonSerDe pour créer la table.

Solution

Lorsque les enregistrements ne sont pas séparés par un saut de ligne (\n), la requête SELECT COUNT(*) FROM TABLE renvoie « 1 ».

Exemple :

{"ID":"1","MYTIMESTAMP":"2020-06-09 17:50:46.267","Name":"John"}{"ID":"2","MYTIMESTAMP":"2020-06-10 17:50:46.267","Name":"Joel"}{"ID":"3","MYTIMESTAMP":"2020-06-10 17:50:46.267","Name":"Patrick"}

Pour corriger ce problème, assurez-vous que les enregistrements sont délimités par \n, comme indiqué dans l'exemple suivant :

{"ID":"1","MYTIMESTAMP":"2020-06-09 17:50:46.267","Name":"John"}

{"ID":"2","MYTIMESTAMP":"2020-06-10 17:50:46.267","Name":"Joel"}

{"ID":"3","MYTIMESTAMP":"2020-06-10 17:50:46.267","Name":"Patrick"}

Dans ce cas, SELECT COUNT(*) FROM TABLE renvoie « 3 ».

Remarque : le SerDE s'attend à ce que chaque document JSON se trouve sur une seule ligne de texte, sans caractère de fin de ligne pour séparer les champs dans l'enregistrement. Pour plus d'informations, consultez Bonnes pratiques pour la lecture des données JSON.


Cet article vous a-t-il été utile ?


Avez-vous besoin d'aide pour une question technique ou de facturation ?