Как работает команда CONCATENATE in ALTER TABLE в HIVE - PullRequest
0 голосов
/ 04 сентября 2018

Я пытаюсь понять, как именно работает ALTER TABLE CONCATENATE в HIVE.

Я видел эту ссылку Как работает Hive 'изменить таблицу <имя таблицы> конкатенация'? но все, что я получил по этим ссылкам, это то, что для файлов ORC слияние происходит на уровне полосы.

Я ищу подробное объяснение того, как работает CONCATENATE. Например, у меня изначально было 500 небольших файлов ORC в HDFS. Я запустил Hive ALTER TABLE CONCATENATE, и файлы объединились в 27 больших файлов. Последующие запуски CONCATENATE сократили количество файлов до 16, и, наконец, я оказался в двух больших файлах (используется версия Hive 0.12), поэтому я хотел понять

  1. Как именно работает CONCATENATE? Это смотрит на существующее количество файлов, а также размер? Как он будет определять количество выходных файлов ORC после объединения?

  2. Есть ли какие-либо известные проблемы с использованием Concatenate? Мы планируем запускать конкатенацию один раз в день в окне обслуживания

  3. Является ли использование CTAS альтернативой объединению и что лучше? Обратите внимание, что мое требование состоит в том, чтобы уменьшить количество файлов ORC (принимаемых через Nifi) без ущерба для производительности Read

Любая помощь приветствуется и спасибо заранее

1 Ответ

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

Как прокомментировал @leftjoin, это действительно тот случай, когда вы можете получить разные выходные файлы для одних и тех же базовых данных.

Это обсуждается более подробно в связанном потоке HCC , но ключевой момент:

Конкатенация зависит от того, какие файлы выбраны первыми.

Обратите внимание, что наличие файлов разных размеров не должно быть проблемой в обычных ситуациях.

Если вы хотите оптимизировать свой процесс, то, в зависимости от объема ваших данных, вы также можете захотеть немного его пакетировать перед записью в HDFS. Например, установив размер партии в NiFi.

...