2

Map / Reduceアプリケーションの性質上、reduce関数は複数回呼び出される可能性があるため、入力/出力キーの値は、MongoDBのMap/Reduce実装と同じである必要があります。なぜHadoopの実装では違うのだろうか?(違うことが許されていると言ったほうがいい)

org.apache.hadoop.mapreduce.Reducer<KEYIN,VALUEIN,KEYOUT,VALUEOUT>

2番目の質問:hadoopは、reduce関数の出力を返して、次の実行で再びreduceするか、HDFSに書き込む必要があることをどのように認識しますか?例えば:

public class MyReducer extends Reducer<Text, IntWritable, Text, IntWritable>
    public void reduce(Text key, Iterable<IntWritable> values, Context context) {
        context.write(key, value) /* this key/value will be returned to reduce in next run or will be written to HDFS? */
    } 
}
4

1 に答える 1

2

入力がドキュメント名(キーとして)とドキュメント行(値)であり、結果が行の長さのSTDDEV(標準偏差)である例を考えてみます。
一般化するには、集計のタイプは入力データのタイプと一致する必要はありません。したがって、Hadoopは開発者に自由を任せます。
2番目の質問へ-HadoopにはMongoDBインクリメンタルMapReduceと同様のメカニズムがないため、reducerの結果は常にHDFS(または他のDFS)に保存され、reduceに戻されることはありません。

于 2012-12-09T07:38:20.623 に答える