Как уменьшить количество генерируемых файлов SQL Alter Table/Partition Concatenate в Hive?

Версия улья: 1.2.1

Конфигурация:

set hive.execution.engine=tez;
set hive.merge.mapredfiles=true;
set hive.merge.smallfiles.avgsize=256000000;
set hive.merge.tezfiles=true;

Высокий уровень качества:

ALTER TABLE `table_name` PARTITION (partion_name1 = 'val1', partion_name2='val2', partion_name3='val3', partion_name4='val4') CONCATENATE;

Я использую HQL для объединения файлов определенной таблицы/раздела. Однако после выполнения в выходном каталоге остается много файлов; и их размер намного меньше 256000000. Итак, как уменьшить количество выходных файлов.

Кстати, использование MapReduce вместо Tez тоже не сработало.


person Po Zhou    schedule 16.10.2015    source источник
comment
Вы можете опубликовать таблицу DDL?   -  person SrinR    schedule 20.04.2016


Ответы (2)


Вы можете установить номер редуктора равным 1, тогда он создаст только один выходной файл.

Вы можете сделать это со следующим;

set mapred.reduce.tasks=1
person Ducaz035    schedule 19.04.2016
comment
Пожалуйста, проверьте комментарий: Кстати, использование MapReduce вместо Tez также не сработало. Так что он может использовать и MapReduce, если захочет. Кроме того, вы можете использовать описанную выше конфигурацию и для Tez. - person Ducaz035; 19.04.2016
comment
Я также могу гарантировать вам, что это действительно решает проблему. Может быть, tez — это немного другая история, но она работает для MapReduce, и это то, о чем спрашивал пользователь. - person Ducaz035; 19.04.2016
comment
Я попробовал это прямо сейчас, и в результате у меня есть 25 файлов. Кроме того, запущенное задание MapReduce — это задание только для карты. Возможно, вы используете другую версию Hive. Я использую Hive 1.2.1 и файлы ORC. И в этих условиях ваше решение не работает. - person mgaido; 19.04.2016
comment
Ну, не могли бы вы попробовать установить мапперы на 1 ? - person Ducaz035; 19.04.2016
comment
Ну, тогда у меня нет идей, извините за это. - person Ducaz035; 19.04.2016

Может быть, вы можете попробовать insert overwrite table ... partition ( ... ) select * from ...

Этот может использовать настройку слияния для tezfiles.

person heyhey    schedule 16.08.2017