据我了解,大多数 JSON SerDe 格式都希望 .json
文件每行存储一条记录。
我有一个 S3 存储桶,其中包含多行缩进的 .json
文件(不控制源),我想使用 Amazon Athena 进行查询(尽管我认为这同样适用通常到 Hive)。
- 是否有能够解析多行缩进的
.json
文件的 SerDe 格式? - 如果没有 SerDe 格式可以做到这一点:
- 是否有处理此类文件的最佳实践?
- 我是否应该计划使用不同的工具(如 python)来展平这些记录?
- 是否有编写自定义 SerDe 格式的标准方法,以便我自己编写一个?
- 是否有处理此类文件的最佳实践?
示例文件正文:
[
{
"id": 1,
"name": "ryan",
"stuff: {
"x": true,
"y": [
123,
456
]
},
},
...
]
最佳答案
不幸的是,没有支持多行 JSON 内容的 serde。有专门的 CloudTrail serde 支持与您的格式类似的格式,但它仅针对 CloudTrail JSON 格式进行了硬编码——但至少它表明它至少在理论上是可行的。不过,目前无法编写您自己的 serdes 以与 Athena 一起使用。
您将无法使用 Athena 使用这些文件,您必须先使用 EMR、Glue 或其他一些工具将它们重新格式化为 JSON 流文件。
关于json - hive中的多行JSON文件查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54466526/