#json #amazon-web-services #aws-glue
Вопрос:
Привет, я пытаюсь использовать Aws Glue для загрузки файла S3 в Redshift. Когда я пытаюсь переползти файл Json из моего хранилища S3 в таблицу, это, похоже, не работает: в результате получается таблица с одним столбцом массива, как показано на рисунке ниже. Я уже пробовал использовать классификатор Json с путем » $ [ * ]», но это, похоже, тоже не работает. Есть какие-нибудь идеи?
Структура файла Json выглядит следующим образом:
[
{
"firstname": "andrew",
"lastname": "johnson",
"subject": "Mathematics",
"mark": 49
},
{
"firstname": "mary",
"lastname": "james",
"subject": "Physics",
"mark": ""
},
{
"firstname": "Peter",
"lastname": "Lloyd",
"subject": "Soc. Studies",
"mark": 89
}
]
Ниже приведен снимок экрана для приведенной таблицы, которая представляет собой один столбец массива, который не может быть сопоставлен с таблицей в красном смещении:
Комментарии:
1. Используете ли вы правильный инструмент для этого случая использования? Зачем использовать клей поверх лямбда-функции и AWS SDK? Вы можете написать функцию Лямбда, которая использует API Amazon S3 для чтения содержимого, анализа JSON, а затем использует API клиента данных Redshift для выполнения операций с базой данных
2. Спасибо за вопрос. Зачем вам использовать лямбду вместо клея? Спрашиваю только из интереса…
3. Обычно клей используется, когда набор данных настолько велик — это приведет к тайм-ауту Лямбды. Если набор данных меньше, вы можете использовать API-интерфейсы Lambda/AWS SDK для выполнения операций с данными. Чтобы считывать данные из корзины Amazon S3, вы можете использовать API Amazon S3 для чтения содержимого и API клиента данных Redshift для размещения данных в базе данных Redshift.
4. Когда вы щелкаете массив в столбце тип данных, что он показывает? Похоже, что искатель взамен выдает вам сложный тип, что, скорее всего, соответствует ожиданиям. Часто вы будете работать над тем, чтобы превратить этот сложный тип в нечто более приемлемое для цели.