Я хотел бы выгрузить файлы данных из Amazon Redshift в Amazon S3 в формате Apache Parquet, чтобы запросить файлы на S3 с помощью Redshift Spectrum. Я исследовал все, но не смог найти ничего о том, как выгрузить файлы из Amazon Redshift в S3 с помощью формата Parquet. Эта функция еще не поддерживается или мне не удалось найти документацию по ней. Может ли кто-нибудь, кто работал над этим, пролить свет на это? Спасибо.
Выгрузка файлов данных из Amazon Redshift в Amazon S3 в формате Parquet
Ответы (5)
Формат файла Redshift Unload to Parquet поддерживается с декабря 2019 г .:
UNLOAD ('select-statement')
TO 's3://object-path/name-prefix'
FORMAT PARQUET
Он упоминается в функциях Redshift.
а также обновлено в Выгрузить документ
с примером, приведенным в документе с примерами выгрузки
Выдержка из официальной документации:
В следующем примере выгружается таблица LINEITEM в формате Parquet, разделенная столбцом l_shipdate.
unload ('select * from lineitem')
to 's3://mybucket/lineitem/'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
PARQUET
PARTITION BY (l_shipdate);
Предполагая, что четыре слоя, полученные файлы Parquet динамически разбиваются на различные папки.
s3://mybucket/lineitem/l_shipdate=1992-01-02/0000_part_00.parquet
0001_part_00.parquet
0002_part_00.parquet
0003_part_00.parquet
s3://mybucket/lineitem/l_shipdate=1992-01-03/0000_part_00.parquet
0001_part_00.parquet
0002_part_00.parquet
0003_part_00.parquet
s3://mybucket/lineitem/l_shipdate=1992-01-04/0000_part_00.parquet
0001_part_00.parquet
0002_part_00.parquet
0003_part_00.parquet
Немного поздно, но Spectrify делает именно это.
Вы не можете этого сделать. Redshift ничего не знает о Parquet (хотя вы можете читать файлы Parquet через абстракцию Spectrum).
Вы можете UNLOAD
в текстовые файлы. Они могут быть зашифрованы или зашифрованы, но только когда-либо плоские текстовые файлы.
Похоже, теперь это поддерживается:
К сожалению, пока что AWS Redshift не расширил возможности чтения формата паркета.
Хотя вы можете сделать одно из следующего:
- Используйте AWS Spectrum, чтобы прочитать их.
- Используйте сканер Amazon Glue, чтобы преобразовать его за вас.
На сегодняшний день в AWS нет готовой поддержки Apache Parquet.
Надеюсь, это поможет.
Отличное решение Spectrify делает это, но если вы не хотите делать это с помощью сервисов AWS; вы можете использовать Spark на EMR + Databricks для чтения данных из Redshift и записи их в S3 в формате паркета.
Следующая ссылка подскажет, как сделать то же самое.
https://github.com/aws-samples/aws-big-data-blog/tree/master/aws-blog-spark-parquet-conversion