2

Я пытаюсь перенести огромный стол из postgres в Redshift.Узкое место вставки вставки красного цвета

  1. Размер таблицы составляет около 5697213832

  2. инструмент: Pentaho вход чайник Таблица (от Postgres) -> Таблица вывода (Redshift)

  3. Соединение с Redshift JDBC4

По наблюдениям, я обнаружил, что вставка в Redshift является узким местом. всего около 500 строк в секунду.

Есть ли способ ускорить ввод в Redshift в режиме одиночной машины? как использовать параметр JDBC?

ответ

7

Основной причиной узкого места выполнения красного смещения, которое я считал, что Redshift рассматривает каждый и каждый удар в кластер в качестве одного запроса. Он выполняет каждый запрос в своем кластере, а затем переходит к следующему этапу. Теперь, когда я отправляю несколько строк (в этом случае 10), каждая строка данных обрабатывается отдельным запросом. Redshift выполняет каждый запрос один за другим, и загрузка данных завершается после выполнения всех запросов. Это означает, что если у вас есть 100 миллионов строк, в вашем кластере Redshift будет выполнено 100 миллионов запросов. Ну, производительность идет на свалку !!!

Использование S3 File Output шаг в PDI будет загружать данные в S3 ведро, а затем применить команду COPY на красном смещении кластера читать одни и те же данные от S3 до RedShift. Это решит вашу проблему производительности.

Вы также можете прочитать ниже ссылки в блоге:

  1. Loading data to AWS S3 using PDI
  2. Reading Data from S3 to Redshift

Надеется, что это помогает :)

+0

В качестве дополнения к этому, если вы можете разделить свой вывод на отдельные файлы на S3, вы можете использовать средство манифеста для распараллеливания своих нагрузок. http://docs.aws.amazon.com/redshift/latest/dg/r_COPY_command_examples.html#copy-command-examples-manifest –

14

Считаете ли вы, что S3 является средним слоем?

Дампируйте данные в файлы csv и примените сжатие gzip. Загрузите файлы на S3, а затем используйте команду copy для загрузки данных.

http://docs.aws.amazon.com/redshift/latest/dg/r_COPY.html

+0

хорошая идея, просто хочу знать, есть ли другие способы загрузки данных в Redshift. как многопоточная вставка в Redshift –

+0

Я думаю, что это самый быстрый способ. В моем случае потребовалось <4 мины для преобразования и загрузки 5M записей = 20 000 строк в секунду (преобразование на EC2, затем передача файлов на S3 и запуск команды копирования) – vtuhtan

+1

Это самый эффективный способ загрузки таблицы в соответствии с документами redshift: http : //docs.aws.amazon.com/redshift/latest/dg/t_Loading_data.html – skud

0

Лучше экспортировать данные в S3, а затем использовать команду COPY для импорта данных в Redshift. Таким образом, процесс импорта выполняется быстро, в то время как вам не нужно его вакуумировать.

0

Экспортируйте свои данные в ведро S3 и используйте команду КОПИРОВАТЬ в Redshift. Команда COPY - это самый быстрый способ вставки данных в Redshift.

Смежные вопросы