关于地图/减少作业到数据集的计算机平均值需要澄清吗?

时间:2015-05-24 05:35:07

标签: hadoop mapreduce

我正在学习map / reduce,我正在研究计算数据集特定列中所有值的平均值的问题。

到目前为止,我所看到的所有解决方案都是按照这个方式做的。

  

数据集
  1
  2
  3
  4
  5个

     

map job:生成键,值对,键为1
  (1,1)
  (1,2)
  (1,3)
  (1,3)
  (1,4)

现在因为地图作业输出的键是相同的,所有这些都将被发送到一个减速器,在那里我们可以进行计算总和/计数

但是,我的问题是,对所有条目使用相同的密钥是否直观? map / reduce的目的不是分割作业,以便我们可以同时运行它们吗?所有地图都没有相同的密钥可以击败map / reduce的目的吗?

这是计算平均值最有效的算法吗?还是可以进一步改进?

1 个答案:

答案 0 :(得分:0)

要映射缩小的输入数据将根据输入数据的大小进行拆分。将为每个拆分运行映射器,这些映射器将同时运行。完成所有映射器后,将根据映射器的输出键触发Reducer。减少器的数量可以手动设置,或者默认情况下分区器负责处理它。

在您的用例中,您需要计算数据集的平均值,为所有映射器输出提供相同的键将是正确的。如果输入数据集的大小更自动,则会触发单个映射器并且所有映射器将同时运行。

相关问题