Почему количество ведер в улье должно быть равно количеству редукторов?

В улье, почему количество ведер должно быть равно количеству редукторов?


person Ramprakash    schedule 03.08.2017    source источник


Ответы (2)


Потому что это наиболее оптимизированный способ работы с mapreduce (при прочих равных условиях). Задачи будут разделены между редьюсерами.

В кустах 0.x и 1.x необходимо указать следующее: hive.enforce.bucketing = true. Это означает, что количество редукторов будет автоматически определяться на основе количества сегментов в вашей таблице. В более поздних версиях куста (2.x) это установлено по умолчанию.

Источник: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL+BucketedTables

person Nebulastic    schedule 18.09.2017

Количество редукторов, запущенных при вставке в таблицу с сегментами, равно делителю количества сегментов в этой таблице. Выбирается делитель, ближайший к максимальному набору редукторов, и запускается такое количество редукторов.

Пример:

Num of buckets in a table 5956.
hive.exec.reducers.max=1009
divisors of 5956=1489*4
number of launched reducers: 4

поэтому можно запустить либо 1489, либо 4 редуктора, но поскольку максимальное количество редукторов, которые можно запустить, составляет 1009, будут работать только 4 редуктора, что может занять десятилетие для запуска таблицы большого размера.

Установка hive.exec.reducers.max=2000 запустит 1489 редюсеров.

person Archit Agarwal    schedule 29.01.2019