【问题标题】:Multi-line JSON file querying in hiveHive 中的多行 JSON 文件查询
【发布时间】:2019-06-25 06:21:30
【问题描述】:

我了解大部分 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
      ]
    },
  },
  ...
]

【问题讨论】:

  • 我没有(py)spark有这个限制

标签: json hive amazon-athena


【解决方案1】:

不幸的是,没有支持多行 JSON 内容的 serde。有专门的 CloudTrail serde 支持与您的格式类似的格式,但它仅针对 CloudTrail JSON 格式进行了硬编码——但至少它表明它至少在理论上是可行的。不过,目前还没有办法编写自己的 serdes 来与 Athena 一起使用。

您将无法使用 Athena 使用这些文件,您必须先使用 EMR、Glue 或其他工具将它们重新格式化为 JSON 流文件。

【讨论】:

  • 这还是唯一的答案吗?我现在也有同样的情况,想确保在我开始重新格式化数百万个 json 文件之前没有办法阅读它
  • 这仍然是 Athena 的一个限制,但是,您现在可以通过 Athena Federation:github.com/awslabs/aws-athena-query-federation 为 Athena 构建自己的数据访问后端,因此您可以通过编写代码来解决这个问题。跨度>
猜你喜欢
  • 2016-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多