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