Ошибка формата JSON AWS ​​Athena

Я пытаюсь загрузить данные из этого json:

JSON-A

[
  {"name": "james", "id": 41},
  {"name": "scott", "id": 62},
  {"name": "abhi", "id": 16},
  {"name": "kevin", "id": 53},
  {"name": "beau", "id": 12},
  {"name": "shally", "id": 35},
  {"name": "jude", "id": 53},
  {"name": "jason", "id": 77},
  {"name": "hongjian", "id": 35},
  {"name": "madhur", "id": 6}
]

Если бы у него был родительский ключ "data", например

JSON-B

["data":{"name": "james","id": 41"},{.....}]

тогда я знаю, что могу:

CREATE EXTERNAL TABLE IF NOT EXISTS test.test (
  `data` array<struct<`name`:string,`id`:bigint>>
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES (
  'serialization.format' = '1'
) LOCATION 's3://test-bucket/';

Но что делать с JSON-A?


person user3089927    schedule 10.01.2017    source источник
comment
JSON-A предназначен для представления одной ячейки в вашей таблице? потому что это то, что делает ваш оператор создания   -  person belostoky    schedule 10.01.2017
comment
вот чего я не хочу. Я хочу, чтобы каждый элемент представлял собой разные ячейки в таблице, и я не мог понять, как это сделать. Не могу придумать оператор создания для JSON-A.   -  person user3089927    schedule 10.01.2017


Ответы (2)


Я не думаю, что это сработает из-за предположения Hive / SerDe, что ваш текстовый файл содержит по одной записи на строку. Из документации org.openx.data.jsonserde.JsonSerDe:

  1. Одна запись на строку - хотя я не уверен, что ваш образец должен быть буквальным в многострочном отношении, образец действительно содержит несколько записей в одной строке.

ВАЖНЫЙ!!! ПРОЧИТАЙТЕ ЭТО НИЖЕ !! Записи Json должны быть по одной в каждой строке, то есть serde НЕ БУДЕТ РАБОТАТЬ с многострочным Json.

  1. Примеры массивов по одной строке - примеры serde делают показать, как работать с массивами, но опять же, не с массивом верхнего уровня, включающим несколько записей в одной строке.
person James    schedule 11.01.2017

Вам нужно будет хранить файл в 's3: // test-bucket /':
{"name": "james", "id": 41} {"name": "scott", "id": 62} {"name": "abhi", "id": 16} {"name": "kevin", "id": 53} {"name": "beau", "id": 12} {"name": "shally", "id": 35} {"name": "jude", "id": 53} {"name": "jason", "id": 77} {"name": "hongjian", "id": 35} {"name": "madhur", "id": 6}

person belostoky    schedule 11.01.2017