функция Hadoop reduce не исключена?


Я запускаю программу mapreduce, но я понимаю, что, хотя я пишу функцию reduce, mapreduce не превосходит ее. Затем я пытаюсь добавить @Override, ошибка говорит, что функция reduce не переопределяет никакие супер методы.

Информация о конфигурации задания приведена ниже

        preProcess.setJobName("GeneProcessing program for 100 SNP");

        preProcess.setMapperClass(PreprocessMapper.class);
        preProcess.setReducerClass(PreprocessReducer.class);

        preProcess.setInputFormatClass(TextInputFormat.class);
        //setInputFormat(TextInputFormat.class);
    preProcess.setOutputFormatClass(TextOutputFormat.class);


    preProcess.setMapOutputKeyClass(Text.class);
    preProcess.setMapOutputValueClass(Text.class);  

        preProcess.setOutputKeyClass(NullWritable.class);
    preProcess.setOutputValueClass(Text.class);

    //preProcess.setNumMapTasks(4);
    preProcess.setNumReduceTasks(4);
    FileInputFormat.setInputPaths(preProcess, preprocessInputPath);
    FileOutputFormat.setOutputPath(preProcess, preprocessOutputPath);
    //JobClient.runJob(preProcess);
        preProcess.waitForCompletion(true);

Уменьшить код, как показано ниже

import java.io.*;
import java.util.*;


import org.apache.hadoop.io.*;
import org.apache.hadoop.mapreduce.Reducer;
    public class PreprocessReducer extends Reducer<Text, Text, NullWritable, Text> 
    {
        public Text newKey = new Text("");

            //no enter the reduce task
            @Override
        protected void reduce(Text key, Iterator<Text> values, Context output)                 
             throws IOException, InterruptedException                
            {

            do something here

        }

    }
1 2

1 ответ:

Ваша подпись для метода reduce неверна - второй аргумент должен быть Iterable<Text>, а не Iterator<Text>:

@Override
protected void reduce(Text arg0, Iterable<Text> arg1,
         Context arg2)
         throws IOException, InterruptedException {

}

Какую IDE вы используете? В Eclipse есть пункт меню Source -> Override / Implement method, который значительно упрощает получение правильной подписи. Я уверен, что Netbeans имеет аналогичную функцию.