Hadoop MapReduce如何在mapper和reducer之前处理相同的键/值对?

时间:2012-10-31 04:35:09

标签: hadoop mapreduce

它会留下剩余的并删除其他的,或将它们全部传递给mapper和reducer吗?

3 个答案:

答案 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阶段进行分组