リデューサーでは、MapReduce API が Writable 値に対する反復子を提供します。next() メソッドの呼び出し:
A. 毎回異なる Writable オブジェクトへの参照を返します。
B. オブジェクト プールから書き込み可能なオブジェクトへの参照を返します。
C. 毎回同じ書き込み可能オブジェクトへの参照を返しますが、異なるデータが取り込まれます。
D. Writable オブジェクトへの参照を返します。API は、これが再利用されたオブジェクトか新しいオブジェクトかを未指定のままにします。
E. 次の値が前の値と同じ場合は同じ書き込み可能オブジェクトへの参照を返し、それ以外の場合は新しい書き込み可能オブジェクトを返します。
質問する
1060 次
2 に答える
1
答えは C です。これは、キーごとに新しいオブジェクトをインスタンス化するオーバーヘッドを節約するために行われます。
于 2012-09-04T20:59:23.917 に答える
0
答えは Cです。毎回同じ書き込み可能オブジェクトへの参照を返しますが、異なるデータが取り込まれます。
レデューサーは、対応するキーのすべての値を 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
}
}
ここで、values は同じ Writable オブジェクト (テキスト) であり、反復するたびに異なるデータが取り込まれます。
于 2015-06-11T01:11:33.797 に答える