我正在学习map / reduce,我正在研究计算数据集特定列中所有值的平均值的问题。
到目前为止,我所看到的所有解决方案都是按照这个方式做的。
数据集
1
2
3
4
5个
map job:生成键,值对,键为1
(1,1)
(1,2)
(1,3)
(1,3)
(1,4)
现在因为地图作业输出的键是相同的,所有这些都将被发送到一个减速器,在那里我们可以进行计算总和/计数
但是,我的问题是,对所有条目使用相同的密钥是否直观? map / reduce的目的不是分割作业,以便我们可以同时运行它们吗?所有地图都没有相同的密钥可以击败map / reduce的目的吗?
这是计算平均值最有效的算法吗?还是可以进一步改进?
答案 0 :(得分:0)
要映射缩小的输入数据将根据输入数据的大小进行拆分。将为每个拆分运行映射器,这些映射器将同时运行。完成所有映射器后,将根据映射器的输出键触发Reducer。减少器的数量可以手动设置,或者默认情况下分区器负责处理它。
在您的用例中,您需要计算数据集的平均值,为所有映射器输出提供相同的键将是正确的。如果输入数据集的大小更自动,则会触发单个映射器并且所有映射器将同时运行。