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
}
}