我正在使用Hive操作通过oozie执行查询。我将TEZ和MR设置为查询的执行引擎。如何建议执行查询的最大可能数量的reducer。目前,我正在使用'mapred.reduce.tasks',但它需要一个静态数字。
真正的问题是,当我在hive CLI上执行相同的查询时,Hive选择的reducers数量是最优的而不是1;所以我的oozie工作缺少什么设置,它会为所有查询选择1个reducer。
答案 0 :(得分:1)
通常,控制Hive查询的reducers数量的理想方法是使用hive.exec.reducers.bytes.per.reducer
属性。
默认值为1 GB,对于输入文件的每1gb大小,将调度一个reducer。
尝试根据预期的最大减速器数量相对减少此值。通过这种方式,您可以使用mapred.reduce.tasks
属性消除设置减少器的静态数量。
答案 1 :(得分:0)
在oozie中运行配置单元操作时,应始终为/// Calculate median
static int calculateMedian(TimeRecordNotifier timeRecordNotifier) {
List<int> mList = List();
timeRecordNotifier.timeRecords.forEach((element) {
mList.add(element.partialTime);
});
//clone list
List<int> clonedList = List();
clonedList.addAll(mList);
//sort list
clonedList.sort((a, b) => a.compareTo(b));
int median;
int middle = clonedList.length ~/ 2;
if (clonedList.length % 2 == 1) {
median = clonedList[middle];
} else {
median = ((clonedList[middle - 1] + clonedList[middle]) / 2.0).round();
}
return median;
}
设置配置属性。这将强制根据您的系统和可用资源创建最佳的减速器值。