Quando eseguo SELECT COUNT (*) FROM TABLE, l'output è "1", ma il file di input contiene più record JSON. Ho utilizzato org.openx.data.jsonserde.JsonSerDe per creare la tabella.
Risoluzione
Quando i record non sono separati da un carattere di ritorno a capo (\n), la query SELECT COUNT (*) FROM TABLE restituisce "1".
Esempio:
{"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"}
Per risolvere questo problema, assicurati che i record siano delimitati da \n, come mostrato nell'esempio seguente:
{"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"}
In questo caso, SELECT COUNT (*) FROM TABLE restituisce "3".
Nota: il SerDE prevede che ogni documento JSON si trovi su una singola riga di testo senza caratteri di terminazione di riga che separano i campi del record. Per ulteriori informazioni, consulta Best practices for reading JSON data.
Informazioni correlate
SELECT
CREATE TABLE
Running SQL queries using Amazon Athena