Ответ 1
По умолчанию 1 может быть установлен для установки ванильной Hadoop. Улей переопределяет его.
В улье с открытым исходным кодом (и, вероятно, EMR)
# reducers = (# bytes of input to mappers)
/ (hive.exec.reducers.bytes.per.reducer)
Этот пост говорит, что default hive.exec.reducers.bytes.per.reducer равен 1G.
Вы можете ограничить количество редукторов, созданных этой эвристикой, используя hive.exec.reducers.max
.
Если вы точно знаете количество редукторов, вы можете установить mapred.reduce.tasks
, и это переопределит все эвристики. (По умолчанию это значение равно -1, что указывает на то, что Hive должен использовать его эвристику.)
В некоторых случаях - скажем, "выберите count (1) из T '- Hive будет устанавливать количество редукторов до 1, независимо от размера входных данных. Они называются" полными агрегатами", и если единственное, что делает запрос, - это полные агрегаты, то компилятор знает, что данные от картографов будут уменьшены до тривиальной суммы, и нет смысла работать с несколькими редукторами.