Amazon Redshift таблица на внешнюю таблицу в S3 каждый час

Я хотел бы экспортировать данные из таблицы Amazon Redshift во внешнюю таблицу, хранящуюся в Amazon S3. Каждый час я хочу экспортировать строки из источника Redshift во внешний целевой объект таблицы.

Какие варианты существуют в AWS для достижения этой цели?

Я знаю, что есть UNLOAD команда, которая позволяет мне экспортировать данные в S3, но я думаю, что это не сработает для сохранения данных во внешней таблице (которая также разделена). Или Amazon EMR, вероятно, единственный способ заставить это работать?

2 ответа

Решение

Внешние таблицы Amazon Redshift Spectrum доступны только для чтения. Вы не можете обновить их из Redshift (например, с помощью команд INSERT).

Следовательно, вам потребуется метод для создания файлов непосредственно в S3.

UNLOAD конечно, может сделать это, но не может сохранить данные в структуре разделов.

Amazon EMR, действительно, будет хорошим вариантом. В наши дни плата взимается посекундно, поэтому для экспорта данных потребуется только достаточно долго. Вы можете использовать предпочитаемый инструмент (например, Hive или Spark), чтобы экспортировать данные из Redshift, а затем записать их в секционированную внешнюю таблицу.

Например, см.: Использование Amazon Redshift Analytics с помощью Apache Spark и Amazon Machine Learning | Блог больших данных AWS

искровой красное смещение

Другим вариантом может быть AWS Glue. Я не слишком знаком с ним, но он может выводиться в разделы, так что это может быть еще более простой способ для достижения вашей цели!

См. Управление разделами для вывода ETL в AWS Glue - AWS Glue

Теперь можно вставить во внешний tsble, я думаю, что с июня 2020 года:https://aws.amazon.com/about-aws/whats-new/2020/06/amazon-redshift-now-supports-writing-to-external -столы-в-амазонке-s3/

И вот документация:https://docs.aws.amazon.com/redshift/latest/dg/r_INSERT_external_table.html

В основном есть 2 пути:

  • INSERT INTO external_schema.table_name { select_statement } Или
  • СОЗДАТЬ ВНЕШНЮЮ ТАБЛИЦУ КАК {SELECT}

Обычно вы указываете в своей внешней схеме redshift (например, my_stg) имя базы данных glu, поэтому любая внешняя таблица, которую вы создаете внутри внешней схемы redshift, уже знает имя базы данных каталога клея. Это хорошая новость, так как оп вопрос от 2018 года

Другие вопросы по тегам