0

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

4

2 回答 2

1

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

于 2012-09-04T20:59:23.917 回答
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

    }

}

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

于 2015-06-11T01:11:33.797 回答