我想从Athena中的嵌套JSON创建一个表。 here中描述的解决方案使用诸如Hive Openx-JsonSerDe之类的工具来尝试在SQL语句中镜像JSON数据。我只想从JSON文件中获取一些字段并创建表。我似乎找不到有关如何执行此操作的任何资源。

例如。
JSON文件{"records": [{"a": "data1", "b": "data2", "c": "data3"}]}
我要创建的表仅具有列ab

最佳答案

我认为您要尝试实现的是取消嵌套数组以将一个数组项转换为一行。

这可以通过正确查询数据结构来实现。

表定义:

CREATE external TABLE complex (
   records array<struct<a:string,b:string>>
   )
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
LOCATION 's3://bucket/test1/';


查询:

select record.a,record.b from complex
cross join UNNEST(complex.records) as t1(record);

09-20 14:40