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