aws athena - 通过 json 对象数组创建表

sam*_*ara 2 json amazon-web-services amazon-athena aws-glue

我能否获得在 AWS Athena 上创建表的帮助。对于数据示例:

[{"lts": 150}]
Run Code Online (Sandbox Code Playgroud)

AWS Glue 将架构生成为:

 array (array<struct<lts:int>>)
Run Code Online (Sandbox Code Playgroud)

当我尝试使用 AWS Glue 创建的表来预览表时,出现以下错误:

HIVE_BAD_DATA: Error parsing field value for field 0: org.openx.data.jsonserde.json.JSONObject cannot be cast to org.openx.data.jsonserde.json.JSONArray
Run Code Online (Sandbox Code Playgroud)

消息错误很清楚,但是我找不到问题的根源!

小智 9

在 AWS Athena 下运行的 Hive 使用Hive-JSON-Serde来序列化/反序列化 JSON。出于某种原因,它们不只支持任何标准的 JSON。他们要求每行一条记录,没有数组。用他们的话来说:

以下示例将起作用。

{ "key" : 10 }
{ "key" : 20 }
Run Code Online (Sandbox Code Playgroud)

但这不会:

{
  "key" : 20,
}
Run Code Online (Sandbox Code Playgroud)

也不是这个:

[{"key" : 20}]
Run Code Online (Sandbox Code Playgroud)