當我執行 SELECT COUNT(*) FROM TABLE 時,輸出為 "1",但輸入檔案有多筆 JSON 記錄。我使用 org.openx.data.jsonserde.JsonSerDe 建立資料表。
解決方法
當記錄未用新行字元 (\n) 分隔時,SELECT COUNT(*) FROM TABLE 查詢將傳回 "1"。
範例:
{"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"}
若要更正此問題,請確保記錄以 \n 分隔,如下列範例所示:
{"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"}
在這種情況,從 SELECT COUNT(*) FROM TABLE 將傳回 "3"。
**注意:**SerDE 預期每個 JSON 文件都位於單行文字,且記錄中的欄位沒有行終止字元。如需詳細資訊,請參閱讀取 JSON 資料的最佳實務。
相關資訊
SELECT
CREATE TABLE
使用 Amazon Athena 執行 SQL 查詢