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