繁体   English   中英

试图理解一个基本的WordCount MapReduce示例

[英]Trying to make sense of a basic WordCount MapReduce example

最近开始使用Hadoop并努力理解一些事情。 这是我正在查看的基本WordCount示例(计算每个单词出现的次数):

Map(String docid, String text):
 for each word term in text:
 Emit(term, 1);

Reduce(String term, Iterator<Int> values):
 int sum = 0;
 for each v in values:
 sum += v;
 Emit(term, sum);

首先, Emit(w,1)应该做什么? 我注意到,在所有示例中,我都将第二个参数始终设置为1 ,但似乎找不到解释。

另外,为了澄清一下-我是否正确地说, 术语是键值和 (归约)构成键值对(分别)? 如果是这种情况, 值是否只是从Map发出的每个术语的1的列表? 这是我能理解的唯一方法,但这只是假设。

对于noob问题的道歉,我看过教程,但是很多时候我发现使用了很多令人困惑的术语,并且使总体基本内容变得比实际更复杂,所以我在做些努力这种感觉。

感谢任何帮助!

以该输入为例,计算字数。

映射器会将这句话分解为单词。

Take,1
this,1
input,1
as,1
an,1
example,1
word,1
count,1
input,1

然后,reducer接收相同单词(或key )的“组”,并像这样对分组值进行列表(并对key进行排序,但这对这个示例并不重要)

Take, (1)
this, (1)
input (1, 1)
etc...

如您所见,键input已被“简化”为单个元素,您可以对它们进行循环求和,然后像这样发出

Take,1
this,1
input,2 
etc...

好问题。

如所解释的,映射器输出(key, value)对的序列,在这种情况下,每个单词的形式为(word, 1) ,减速器将其分组为(key, <1,1,...,1>) ,将列表中的术语相加并返回(key, sum) 请注意, 不是归约者在进行分组; 这是map-reduce环境。

map-reduce编程模型与我们以前使用的模型不同,并且在该模型中如何实现算法通常并不明显。 (例如,考虑如何实现k均值聚类。)

我推荐Leskovec等人免费提供的《海量数据集的挖掘》 一书的第2章。 另请参见相应的幻灯片

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM