2014-11-18 2 views
2

Может кто-нибудь, пожалуйста, помогите мне, как сделать большой и быстрый экспорт в Hive to Vetica без какого-либо соединителя для подключения?Улей на экспорт данных Vertica с помощью Unix named pipe

В настоящее время я экспортирую то же самое через unix Namedpipe , но производительность не так уж хороша.

почти 5 параллельных потоков для загрузки данных в вертику, а время составляет около 230 минут для 1,6 миллиарда записей?

Может ли кто-нибудь помочь мне улучшить эту производительность, и если мы сможем оптимизировать этот экспорт?

Благодаря абхов

+0

Непонятно, что вы спрашиваете, может быть, приведен пример кода или дальнейших подробностей. – EternalHour

+0

эй, на самом деле мы планируем перенести большие таблицы из hivr, как 3 миллиарда записей из улья в Vertica с помощью unix named pipe означает сначала выбрать col1 col2 из таблиц hive> mkfifo после этого мы выполняем подключение по вертикали и начинаем копировать как ниже cat mkfifo | copy to vertica Мы делаем это упражнение с 5 параллельными потоками на 5 узлах в Vertica. –

+0

@abhishekrastogi это одно время или произойдет часто? – Kermit

ответ

4

Мы делаем это, не используя именованный канал (mkfifo), но стандартные анонимные трубы оболочки:

hive -e "select whatever FROM wherever" | \ 
dd bs=1M | \ 
/opt/vertica/bin/vsql -U $V_USERNAME -w $V_PASSWORD -h $HOST $DB -c \ 
"COPY schema.table FROM LOCAL STDIN DELIMITER E'\t' NULL 'NULL' DIRECT" 

Это отлично работает для нас. Обратите внимание на «dd» между ульем и vsql. Это необходимо для правильной работы. Трудно дать вам хорошие цифры с этим, потому что наш оператор выбора улья на самом деле не является тривиальным, и я не знаю, где было потрачено время (обработка улья или загрузка данных).

Но tbh, используя именованный канал, как вы, или неназванный канал, как мы делаем, - это хороший способ сделать это, и вы не можете оптимизировать его на уровне системы. Есть несколько вещей, чтобы принять во внимание, хотя:

  • время вычислить свой улей запрос
  • , где вы ведете свой запрос. Например, если вы запустите его, создайте сторонний компьютер, данные должны перетекать из улья на ваш сервер в Vertica. Выполнение команды на сервере улья или на узле Vertica может ускорить работу, пропуская ненужный прыжок.
  • COPY заявление: вы используете DIRECT?
  • и, конечно, обычные проекции (несколько выступов замедляют загрузку), ресурсы Vertica и т. Д.

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

  • Нет связанных вопросов^_^