我可以用AWS雅典娜查询漂亮打印的JSON吗?



我有一个S3桶,里面有数千个JSON文件,这些文件"打印得很漂亮",这意味着它们是有效的JSON,但其中包含换行和缩进。

每个JSON文件包含一个单独的文档,这意味着它以{开始,以}结束。

的例子:

{
"id": "0d8147aa-f08f-4b02-aaec-db1af70c2904",
"customer": {
"id": "10d55752-9fbc-434c-bcff-f80b55216c07",
"given_name": "Edward",
"middle_initial": "M",
"family_name": "Fielding"
}
}

我创建了一个这样的表:

CREATE EXTERNAL TABLE `sales` (
`id` STRING,
`customer` STRUCT<
`id`:STRING,
`given_name`:STRING,
`middle_initial`:STRING,
`family_name`:STRING>)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' 
LOCATION
's3://my-bucket/my-folder/'

但是当我尝试运行任何查询时,我得到:

Row is not a valid JSON Object - JSONException: A JSONObject text must end with '}' 

作为一个实验,我抓取了一些文件,并删除了换行符,使每个JSON文档在一行中,问题消失了。

雅典娜就是无法处理"漂亮的印刷"吗?JSON吗?是否有一种方法可以配置SERDE来支持这一点?

在我的环境中,这些文件是由非常难以更改的东西生成的。在任何编程语言中,处理这样的文件都是微不足道的。如果结论是不可能在Athena上使用这些文件,我会非常失望。

Athena不支持漂亮的打印JSON,除了将数据重新格式化为每行一个对象之外,没有其他解决方案。见https://stackoverflow.com/a/54507266/1109

相关内容

  • 没有找到相关文章

最新更新