Vertica не экспортирует в паркет все данные без оговорки об ограничении - PullRequest
0 голосов
/ 17 января 2019

Я вижу странное поведение при попытке выполнить EXPORT TO PARQUET из Vertica на локальный диск. Смотрите пример:

Когда я делаю

EXPORT TO PARQUET (directory = '/data') over (partition by install_date) 
    AS select field1, field2 from table where install_date >= 'some_date';

Вертика говорит:

Rows Exported
---------------
  16 405 136

Но когда я читаю результат паркет (используя Pyarrow или Spark), я получаю только 2 522 845 строк. оо

Размер каталога составляет около 59 млн.

После нескольких часов тестирования я обнаружил, что если я выполняю ту же команду, но с предложением limit с огромным большим значением, это работает!

EXPORT TO PARQUET (directory = '/data') over (partition by install_date) 
   AS select field1, field2 from table where install_date >= 'some_date' limit 10000000000;

Затем Vertica экспортирует то же число строк 16 405 136, а паркет имеет такое же количество строк! И размер каталога составляет около 350 млн.

Есть идеи, почему?

Спасибо.

1 Ответ

0 голосов
/ 07 апреля 2019

Работаете ли вы на многоузловом кластере Vertica?Если это так, то каждый узел экспортирует свою «часть» (сегмент) данных в файл в своем собственном каталоге / data.

Вам необходимо собрать эти файлы со всех узлов или экспортировать в общее местоположение, напримерNFS / aws S3.

При LIMIT x Vertica сначала собирает данные в узел, который выполнил запрос, а затем только этот узел экспортирует данные в файл.

Этот подход неВоспользуйтесь способностью Vertica mpp, и она должна быть намного медленнее.

...