它会留下一个并删除其他的,还是将它们全部传递给mapper和reducer?
问问题
2545 次
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 回答