aws athena - создать таблицу из массива объекта json - PullRequest
0 голосов
/ 18 мая 2018

Могу ли я получить помощь в создании таблицы на AWS Athena.Для примера примера данных:

[{"lts": 150}]

AWS Glue создает схему следующим образом:

 array (array<struct<lts:int>>)

Когда я пытаюсь использовать созданную таблицу с помощью AWS Glue для предварительного просмотра таблицы, у меня былоэта ошибка:

HIVE_BAD_DATA: Error parsing field value for field 0: org.openx.data.jsonserde.json.JSONObject cannot be cast to org.openx.data.jsonserde.json.JSONArray

Ошибка сообщения ясна, но я не могу найти источник проблемы!

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Hive, работающий под AWS Athena, использует Hive-JSON-Serde для сериализации / десериализации JSON.По некоторым причинам они не поддерживают какой-либо стандартный JSON.Они просят одну запись на строку, без массива.По их словам:

Будет работать следующий пример.

{ "key" : 10 }
{ "key" : 20 }

Но это не так:

{
  "key" : 20,
}

Ни это:

[{"key" : 20}]
0 голосов
/ 18 мая 2018

Вам следует создать классификатор JSON для преобразования массива в список объектов вместо одного объекта массива.Используйте путь JSON $[*] в своем классификаторе, а затем настройте сканер для его использования:

  • Редактировать сканер
  • Разверните "Описание и классификаторы"
  • Нажмите "Добавить"'на левой панели, чтобы связать ваш классификатор с сканером

После этого удалите ранее созданную таблицу и повторно запустите сканер.Это создаст таблицу с правильной схемой, но я думаю, что Афина все еще будет жаловаться, когда вы попытаетесь запросить ее.Однако теперь вы можете читать из этой таблицы, используя задание Glue ETL, и обрабатывать один объект записи вместо объектов массива

...