Как проверить производительность команды Redshift COPY из AWS S3? - PullRequest
0 голосов
/ 10 ноября 2019

Я работаю над приложением, в которое я буду загружать данные в Redshift .

Я хочу загрузить файлы в S3 и использовать COPY команда для загрузки данных в несколько таблиц.

Для каждой такой итерации мне нужно загружать данные в 20 таблиц .

Сейчас я создаю 20 CSV-файлов для загрузки данных в 20 таблиц , причем для каждой итерации будут загружаться созданные файлы 20 . в 20 таблиц . И для следующей итерации новые 20 CSV-файлы будут созданы и выгружены в Redshift .

В текущей системе, которую я имею, каждый CSV-файл может содержать максимум 1000 строк , которые должны быть выгружены в таблицы. Максимум 20000 строк для каждой итерации для 20 таблиц .

Я хотел еще больше повысить производительность. Я прошел через https://docs.aws.amazon.com/redshift/latest/dg/t_Loading-data-from-S3.html

На данный момент я не уверен, сколько времени потребуется для загрузки 1 файла в 1 таблицу Redshift. Действительно ли стоит разделять каждый файл на несколько файлов и загружать их параллельно?

Существует ли какой-либо источник или калькулятор для приблизительной оценки производительности загрузки данных в Redshift таблиц, основанный на количестве столбцов и строк, чтобы я мог решить, стоит ли продолжать разбивать файлы дажепрежде чем перейти к Redshift .

1 Ответ

2 голосов
/ 11 ноября 2019

Вам также следует ознакомиться с рекомендациями в Руководстве по загрузке данных - рекомендации: https://docs.aws.amazon.com/redshift/latest/dg/c_loading-data-best-practices.html

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

  • Загрузка данных из одного файла заставляет Redshift выполнять сериализованную загрузку, которая намного медленнее, чем параллельная загрузка.
  • Файлы данных загрузки должны быть разделены так, чтобы файлы были примерно одинакового размера, от 1 МБ до 1 ГБ после сжатия. Для оптимального параллелизма идеальный размер составляет от 1 до 125 МБ после сжатия.
  • Количество файлов должно быть кратным количеству срезов в вашем кластере.

Эта последняя точка важна для достижения максимальной пропускной способности - если у вас 8 узлов, то вы хотитеn * 8 файлов, например, 16, 32, 64 ... так что все узлы выполняют максимальную работу параллельно.

Тем не менее, 20000 строк - это такой маленький объем данных в терминах Redshift, что я не уверен, что дальнейшая оптимизация существенно повлияет на скорость вашего процесса в его нынешнем виде.

...