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 ?

Lecture de 1 minute(s)
0

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.


Informations connexes

SELECT

CREATE TABLE

Exécution de requêtes SQL à l'aide d'Amazon Athena

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 2 ans