运行 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 查询