В демо-версии Kinesis Firehose нет разделителей; Redshift не может анализировать без. Что неправильно?

Когда я прошел первые шаги обучения с Kinesis, Firehose и Redshift сегодня, я был рад обнаружить, что у Amazon есть настройка «попробуйте наш производитель демонстрационных данных».

Я был разочарован, узнав, что на самом деле это не работает.

Итак, я пошел копать. И я обнаружил, что STL_LOAD_ERROR содержал ошибки, предполагающие, что ожидался разделитель, и записи, которые выглядели как {field:val,field:val}{field:val,field:val}.

...{"TICKER_SYMBOL": |     1214 | Delimiter not found 

«Должно быть, где-то зачищает новые строки», — подумал я.

Покопавшись, я обнаружил, что в соответствующем сегменте S3 есть производственные записи в неожиданном формате:

{field:val,field:val}{field:val,field:val}...

То есть между кажущимися записями нет разделителей, которые представляют собой однострочные файлы по несколько десятков К каждый.

Другие сообщения SO, похоже, предполагают, что это ожидаемый формат данных.

Почему Redshift нужны данные в формате, который не используется в демонстрации данных? Что мне перенастроить?


person John Haugeland    schedule 05.01.2017    source источник
comment
На данный момент усвоил две вещи. 1) Пример данных в формате JSON. JSON необходимо включить как команду COPY. JSON как «авто» 2) Пример данных имеет ключи верхнего регистра. Redshift имеет только строчные буквы, имена столбцов чувствительны к регистру. Нужны пути JSON.   -  person John Haugeland    schedule 05.01.2017


Ответы (1)


Хорошо. Было три проблемы.

  1. Производитель данных примера AWS создает данные в формате, который требует изменений в команде Redshift COPY, но они не сообщают вам об этом.
  2. Вам нужно добавить FORMAT AS JSON 's3://yourbucketname/aJsonPathFile.txt'
  3. Вам необходимо создать файл пути JSON, поскольку производитель данных по умолчанию создает имена столбцов в верхнем регистре, которые Redshift не может использовать.
person John Haugeland    schedule 05.01.2017