0

它会留下一个并删除其他的,还是将它们全部传递给mapper和reducer?

4

3 回答 3

2

Hadoop 框架不会忽略/删除任何重复的 KV 对。对 KV 对的任何忽略/修改都必须在用户定义的 map 和 reduce 函数中完成。

框架读取输入数据并调用用户定义的映射函数,输入数据为 KV 对,映射函数经过一些处理后发出 KV 对。这些中间 KV 对被排序/合并,并且用户定义的 reducer 函数被一次又一次地调用每个键,reduce 函数将再次发出 KV 对。

建议获取Hadoop: The Definitive Guide, 3rd Edition,以便更清楚地了解 MapReduce 和 Hadoop。

于 2012-10-31T05:49:42.477 回答
2

相同的键值对


地图阶段

由于键值对彼此独立,因此 Mapper 永远不会查找/知道相同的键值对

前任:

key  value
1       2
1       2
2       5
3       19


map(k,v)
{
 emit(k,v)
}

发射:1,2 1,2 2,5 3,19


减少阶段

通过对 Key 上的值进行排序来处理相同的 Key-Value 对,因此与 Key 关联的值被忽略,因此每个值都被视为唯一的

前任:

key    value 
1      {2,2}
2      {5}
3      {19}

于 2012-10-31T05:50:52.930 回答
0

正如@saurabh 提到的,MapReduce 模型将在 Map 阶段独立读取它们,并在 Reduce 阶段按 Key 进行分组

于 2016-11-28T10:05:25.447 回答