Hadoop Reducer提供可写值.Next()返回?

时间:2012-09-04 20:10:33

标签: hadoop

在reducer中,MapReduce API为您提供了一个可写值的迭代器。调用next()方法:
A.每次返回对不同Writable对象的引用 B.从对象池返回对Writable对象的引用 C.每次返回对同一可写对象的引用,但填充不同的数据 D.返回对Writable对象的引用。无论是重用对象还是新对象,API都未指定 E.如果下一个值与前一个值相同,则返回对同一可写对象的引用,否则返回新的可写对象。

2 个答案:

答案 0 :(得分:1)

答案是C.这样做是为了节省为每个密钥实例化一个新对象的开销。

答案 1 :(得分:0)

答案是: <强> C 即可。每次返回对同一可写对象的引用,但填充了不同的数据。

已知reducer通过Iterator或Iterable将相应键的所有值分组。例如。在reduce()方法中:

public void reduce(Text key, Iterable<Text> values,Context context) throws Exception{

//Code here

// for iterating through the values

    while(values.hasNext()){
               //code here

    }

}

这里,值是相同的可写对象(Text),每次迭代时都会填充不同的数据。