为什么我们需要在MapReduce作业中显式设置OutputKey / InputKey类?

时间:2015-02-20 18:00:28

标签: java hadoop mapreduce

为什么我们需要在MapReduce作业中显式设置OutputKey / InputKey Class,而Map和Reduce类必须分别扩展需要添加<InputKeyClass, InputValueClass, OuputKeyClass, OutputValueClass>的Mapper和Reducer类?

一个例子:

JobConf:

    job.setOutputKeyClass(NullWritable.class);
    job.setOutputValueClass(Text.class);
    job.setOutputFormatClass(TextOutputFormat.class);

减速机:

public static class ComputeReducer extends
        Reducer<Text, Text, NullWritable, Text> {

如果我们已经明确地将reducer类设置为扩展'Reducer <Text, Text, NullWritable, Text>'那么为什么需要传递OutputKey / value类?

1 个答案:

答案 0 :(得分:3)

你必须这样做,因为所有遗传信息都在java中运行时丢失。