我试图了解如何使用mapreduce找到一个非常大的文件的min,max,Avg。将reduce任务数设置为1是一个显而易见的解决方案,但对于非常大的文件来说并不是最佳选择。我也在考虑编写一个链式MR工作,但最终,你最终在最后的工作中使用了一个减速器。有人可以通过任何其他方式解决这个问题。
由于
答案 0 :(得分:3)
我没有看到在这里使用1 reducer有任何问题,无论输入数据集多大。为此,您应该使用组合器功能,它将返回其本地Max,本地Min,本地TotalSum和Count并传递给单个reducer。这样,直到reducer的数据量非常少(与映射器的数量成正比)。一旦这个小数据到达单个减速器,您就可以找到全局最大值和最小值,并且平均值将总和除以总计数。
答案 1 :(得分:0)
您需要编写逻辑来计算reducer类中的min,max或Avg。此外,我相信找出一个非常大的文件的min,max,avg无论如何都会产生一个输出文件。