json - hive中的多行JSON文件查询

标签 json hive amazon-athena

据我了解,大多数 JSON SerDe 格式都希望 .json 文件每行存储一条记录。

我有一个 S3 存储桶,其中包含多行缩进的 .json 文件(不控制源),我想使用 Amazon Athena 进行查询(尽管我认为这同样适用通常到 Hive)。

  1. 是否有能够解析多行缩进的 .json 文件的 SerDe 格式?
  2. 如果没有 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/

相关文章:

java - 如何在 Spring 中从文件连接 JSON 数据?

json - 在 Ruby 中解析非常大的 JSON 文件的正确方法是什么?

hadoop - 我们可以在同一群集中安装多个配置单元服务器吗?

mysql - Hive中使用CTE加入错误

amazon-web-services - 如何忽略亚马逊雅典娜结构顺序

amazon-web-services - AWS Redshift Spectrum - 如何获取外部表中的 s3 文件名

javascript - 在 D3.js hover 中过滤和匹配 json 数据

json - 键嵌套数组和/或字典的 Swift JSON 对象

hadoop - 为什么会有 Pig 和 Hive

sql - 如何根据 Athena (Presto) 中的列值将一行分成多行?