首页 > 解决方案 > Map 可以多次计算出现次数吗?

问题描述

我读过一个教程,它Map计算字典中的每个单词,如下所示: ('house', 1).

然后在一个巨大的文本中它可能会多次找到“房子”这个词。因此,该Reduce函数将从该函数中获取尽可能多的 (house,1) ,并且如果它在文档中找到它 100 次,Map它将迭代给出 a 。('house',100)

这是它的工作原理吗?为什么该Map函数第二次找到“house”这个词时没有存储它('house',2)

标签: hadoopmapreduce

解决方案


Mapper 在输入中的每个项目上都会被调用,然后它会发出一系列中间键/值对。

这些键/值对如下所示:(feature, partial aggregate value)(house, 1)在您的示例中。之后,给定键的所有发出的值都像这样(feature, (value1, value2, etc.)(house, (1, 1, 1, 1, 1))组合在一起。

最后,Reducer 从该特征的所有中间值计算最终聚合结果。因此,(feature, (value1, value2, etc.)变为(feature, totalValue)。或者(house, (1, 1, 1, 1, 1))变为(house, 5)

映射器不计算该特征(或您的示例中的单词)出现的次数,它只是将输出拆分为(特征,值)。Reducer 的工作是计算特征的最终聚合。否则,Reducer 的目的是什么?

我需要说明我目前正在学习 Hadoop 和 MapReduce 编程模型。因此,如果我错了,请纠正我。


推荐阅读