Многострочный запрос файлов JSON в улье - PullRequest
0 голосов
/ 31 января 2019

Я понимаю, что большинство форматов JSON SerDe предполагают, что .json файлы будут храниться с одной записью на строку.

У меня есть S3-контейнер с многострочным отступом .json файлы (не контролируют источник), которые я хотел бы запросить с помощью Amazon Athena (хотя я полагаю, что это относится и к Hive в целом).

  1. Существует ли там формат SerDeкоторый может анализировать многострочные файлы .json с отступом?
  2. Если не формат SerDe, чтобы сделать это:
    • Есть ли лучший способ дляиметь дело с такими файлами?
      • Должен ли я планировать выравнивание этих записей с помощью другого инструмента, такого как python?
    • Существует ли стандартный способ написания пользовательских форматов SerDe, поэтому я могу написать один сам?

Пример файла тела:

[
  {
    "id": 1,
    "name": "ryan",
    "stuff: {
      "x": true,
      "y": [
        123,
        456
      ]
    },
  },
  ...
]

1 Ответ

0 голосов
/ 03 февраля 2019

К сожалению, нет serde, который поддерживает многострочный контент JSON.Существует специализированная серия CloudTrail, которая поддерживает формат, аналогичный вашему, но он жестко задан только для формата CloudTrail JSON - но, по крайней мере, показывает, что это по крайней мере теоретически возможно.В настоящее время нет никакого способа написать свои собственные serdes для использования с Athena, однако.

Вы не сможете использовать эти файлы с Athena, вам придется использовать EMR, Glue или какой-либо другой инструмент длясначала переформатируйте их в потоковые файлы JSON.

...