Фильтрация данных, загруженных в Redshift - PullRequest
0 голосов
/ 11 июля 2019

У нас есть необработанные данные, хранящиеся в S3 как паркет.Я хочу, чтобы часть этих данных была загружена в Redshift.Чтобы было ясно, данные Redshift будут результатом запроса (объединений, фильтров, агрегаций) необработанных данных.

Первоначально я думал, что смогу построить представления в Афине и загрузить результаты в Redshift -но кажется, что это не так просто!

Работы по склеиванию ETL нуждаются в источнике S3 или RDS - не примут вид из Афины.(Также нельзя сканировать представление).

Следующее решение состояло в том, чтобы поиграть с функциональностью Athena CTAS, записать результаты представления в S3 и затем загрузить в RedShift.Тем не менее, в CTAS нет опции «перезаписать».

Так что вопросы ... Есть ли более простой способ подойти к этому?(кажется простым требованием) Существует ли простой обходной путь для выполнения CTAS с поведением «перезаписи»?С этим должно было бы быть решение, которое могло бы быть объединено в запланированную работу - и я уже думаю, что это приводит к созданию собственного сценария.

Когда простая работа становится такой сложной - я не могу не думать, чтопропускаю что-то простое!?

Спасибо

1 Ответ

1 голос
/ 11 июля 2019

Старый надежный: используйте лямбду! Лямбда-функции могут программно подключаться как к s3, так и к красному смещению для выполнения операторов SQL, и у вас есть много вариантов того, что будет запускать лямбда (если это просто одноразовая вещь, вы можете просто назначить лямбду по расписанию). Вы также сможете использовать журналы cloudwatch для изучения процесса.

Но будьте осторожны: я заметил, что вы сохранили свои данные в виде паркета ... Обычный Redshift не поддерживает данные в формате паркета. Поэтому, если вы хотите хранить типы, такие как структуры и т. Д., Вам нужно будет использовать Redshift Spectrum.

...