У меня 66 паркетных файлов со сжатием GZIP, состоящих из 2 миллиардов записей в S3, я использую команду копирования Vertica для копирования данных из s3 в Vertica, как показано ниже.
COPY schema.table ( col1, col2, col3, col4, col5, col6 ) FROM 's3://test_path/*' PARQUET ABORT ON ERROR DIRECT NO COMMIT
У нас есть 4 узла Vertica,Чтобы скопировать эти 2 миллиарда строк, требуется более 45 минут. В документации Vertica сказано, что загрузка файлов из S3 по умолчанию выполняется в многопоточном режиме на нескольких узлах. Наш DBA сказал мне, что для достижения максимальной производительности параллельно выполняется 66 запросов (1 запрос на файл), таким образом, каждый запрос будет выполняться на другом узле, а каждый запрос будет загружать свой файл.
Команда Vertica Copy вызывается программно из Java, я не хочу запускать команду копирования для файлов, это затрудняет поддержание транзакции, а также, файлы могут увеличиться до 1000+ во время пиковой загрузки.
Я хочу сократить время выполнения, используя только одну команду COPY, любые указатели и помощь будут действительно оценены.
Спасибо