В контексте этого другого вопроса здесь
Использование директивы hive.exec.reducers.max действительно сбило меня с толку.
С моей точки зрения, я думал, что улей работает по некоторой логике, например, у меня N # блоков в желаемом запросе, поэтому мне нужно N карт.От NI потребуется некоторый разумный диапазон редукторов R, который может быть где угодно от R = N / 2 до R = 1. Для отчета по улью, над которым я работал, было более 1200 карт, и без какого-либо влияния улей составил план на 400редукторы, что было хорошо, за исключением того, что я работал над кластером, в котором было всего 70 редукторов.Даже с честным планировщиком заданий это привело к отставанию, которое могло бы привести к зависанию других заданий.Поэтому я пробовал много разных экспериментов, пока не нашел hive.exec.reducers.max и установил его примерно равным 60.
В результате улей занял 248 минут и завершился за 155 минут безизменения в результате.Меня беспокоит, почему бы не задавать значение куста по умолчанию, равное N, которое никогда не превышает емкость кластера-редуктора, и, поскольку я могу пролистать несколько терабайт данных с сокращенным набором редукторов, то, что улей считает правильным, лучше всегда пробоватьи настроить это количество?