為什麼 Amazon Athena 中的 SELECT COUNT 查詢只傳回一筆記錄,即使輸入 JSON 檔案有多筆記錄亦如此?

1 分的閱讀內容
0

當我執行 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 查詢

AWS 官方
AWS 官方已更新 2 年前