1

我一直在看 hadoop 的这个字数统计示例:http: //hadoop.apache.org/docs/r1.0.4/mapred_tutorial.html#Source+Code

我对 Map 功能有点困惑。在显示的 map 函数中,它接受 LongWritable 类型的“key”,但该参数从未在 Map 函数的主体中使用。应用程序程序员希望 Hadoop 为这个密钥传递什么?如果 map 函数只是从一行文本或其他东西中解析值,为什么它需要一个键。有人可以给我一个输入需要键和值的例子吗?我只看到地图为 V1 -> (K2, V2)。

另一个问题:在hadoop的实际实现中,它们是否有多个reduction步骤?如果是这样,如果函数是 (K2, V2) -> (K3, V3),hadoop 如何多次应用相同的归约函数?如果再做一次归约,需要取入类型(K3, V3)...

谢谢!

4

1 回答 1

2

那里有一个键,因为 map() 方法总是传递一个键和一个值(和一个上下文)。是否实际使用键和/或值取决于您。在这种情况下,键代表正在读取的文件中的行号。字数逻辑不需要那个。map() 方法只使用该值,在文本文件的情况下是文件的一行。

至于您的第二个问题(实际上应该是它自己的堆栈溢出问题),您可能在 hadoop 工作流程中有任意数量的 map/reduce 作业。其中一些作业将读取为输入预先存在的文件,而其他作业将读取其他作业的输出。每个作业将有一个或多个映射器和一个减速器。

于 2013-03-28T01:11:40.813 回答