为什么即使输入 JSON 文件有多条记录,Amazon Athena 中的 SELECT COUNT 查询也仅返回一条记录?

上次更新日期:2022 年 8 月 25 日

运行 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 数据的最佳实践


这篇文章对您有帮助吗?


您是否需要账单或技术支持?