【发布时间】:2016-07-04 20:29:30
【问题描述】:
我正在尝试编写一个计算某些统计数据平均值的 mapreduce 程序。
映射器读取其各自段中的数据并执行一些过滤器。
我正在使用多个 Reducer。
因此,reducer 将能够仅计算该分区中的局部平均值。但是,我需要所有减速器的所有数据的平均值。我该如何解决这个问题?
一个想法是使用全局计数器来保存总和和计数。但是我需要在所有减速器运行后运行的一段代码(以便我可以对最终的总和和计数进行操作)并将平均值输出到文件中。这是一种可行的方法吗?我该怎么做?
还要注意我必须使用多个减速器。因此,仅使用一个 reducer 并在 cleanup 方法中进行平均计算的选项是不可能的。
【问题讨论】:
-
在
waitForCompletion()之后的驱动代码中做