我在查询Amazon Athena中创建的表时遇到以下错误。
错误
HIVE_CURSOR_ERROR:行不是有效的JSON对象 - JSONException:JSONObject文本必须在2处以'}'结尾
我正在使用的示例文件和创建表的查询如下所示。通过以下查询成功创建表,但是当我从表中获取结果时,我收到错误。请提供宝贵的建议。
答案 0 :(得分:4)
答案 1 :(得分:0)
我正在滥用答案字段,以留出更多空间,并对此有所构想。我希望这对任何使用Athena的人都是有用的。
我正在使用Athena创建两个表。在两个单独的存储桶文件夹和两个相应表中的基于单行json和基于多行json的报告。
JSON中的单行报告非常简单。对于表创建,我使用以下驱动程序:
ROW FORMAT serde 'org.apache.hive.hcatalog.data.JsonSerDe'
但是,如果您使用此确切的一项来消耗多行,则会出现错误,另外还有三件事( I , II 和 III < / strong>)。首先是不同的驱动程序:
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
然后
我(无效)JSON格式。我的多行文件如下所示:
{"key": "value"}
{"key": "value"}
请注意,每行只有一个JSON对象,并且对象不用逗号分隔! 您可以在这里阅读有关内容:
Store multiple elements in json files in AWS Athena
II 创建语句
与您创建表@abc的屏幕截图相反,我没有嵌套结构使用它:
CREATE EXTERNAL TABLE IF NOT EXISTS internal_reports (
`Date` Date,
impressions INT,
reach INT,
follower INT,
...
)
III 日期属性
我遇到了整个驱动程序测试过程,因为Date属性在单行表中引起了问题,因为Date的值具有不等于午夜的时间信息。对于其他多行报告,我的日期还可以(时间恰好是午夜)。您可以在这里阅读有关内容:
https://developer.ibm.com/answers/questions/177238/timestamp-format-must-be-yyyy-mm-dd-hhmmssffffffff/ Athena - DATE column correct values from JSON
欢呼