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



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

一个例子:

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类?

您必须这样做,因为在java中,所有通用信息在运行时都会丢失。

相关内容

  • 没有找到相关文章

最新更新