它会留下剩余的并删除其他的,或将它们全部传递给mapper和reducer吗?
答案 0 :(得分:2)
Hadoop框架不会忽略/删除任何重复的KV对。任何对KV对的忽略/修改都必须在用户定义的映射中完成并减少函数。
框架读取输入数据并调用用户定义的映射函数,输入数据为KV对,映射函数在经过一些处理后发出KV对。对这些中间KV对进行排序/合并,并为每个键一次又一次地调用用户定义的reducer函数,reduce函数将再次发出KV对。
建议获得Hadoop: The Definitive Guide, 3rd Edition以更好地理解MapReduce和Hadoop。
答案 1 :(得分:2)
相同的KeyValue对
由于键值对彼此独立,因此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关联的值,因此每个值都被视为唯一。 < / p>
前:
key value
1 {2,2}
2 {5}
3 {19}
答案 2 :(得分:0)
MapReduce模型将在Map阶段独立读取它们,并通过@saurabh中提到的Key in the Reduce阶段进行分组