- 案例分析
单词计数(Word Count)是一个经典的问题,也是能体现MapReduce设计思想的最简单算法之一。该算法主要是为了完成对文字数据中所出现的单词进行计数,如图2-4所示。
伪代码如下:
Map(K,V)
{
For each word w in V
{
Collect( w, 1 );
}
Reduce(K,V[])
{
int count = 0;
For each v in V
{
count += v;
}
Collect(K,count);
}
}
下面就根据MapReduce的四个执行步骤对这一算法进行详细的介绍。
- 根据文件所包含的信息分割(Split)文件,在这里把文件的每行分割为一组,共三组,如图2-5所示。这一步由系统自动完成。
- 对分割之后的每一对<key,value>利用用户定义的Map进行处理,再生成新的<key,value>对,如图2-6所示。
- Map输出之后有一个内部的Fold过程,和第一步一样,都是由系统自动完成的,如图2-7所示。
经过Fold步骤之后的输出与结果已经非常接近,再由用户定义的Reduce步骤完成最后的工作即可,
点击加载更多评论>>