2
我正在運行mapreduce程序,但我意識到雖然我編寫了reduce函數,但mapreduce並不能優於它。然後我嘗試添加@Override
,錯誤表示reduce函數不覆蓋任何超級方法。hadoop減少函數不被執行?
作業配置信息如下
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
}
}
我在mac中使用netbean,以前使用mapred包的代碼,我想更改爲mapreduce包,但奇怪的是,netbean並沒有給我更正。 – user974270
@Chris White,我面臨同樣的問題,我使用Iterable作爲第二個參數,但仍然沒有調用reduce函數。請檢查我的程序[這裏](http://pastebin.com/vy7upAdJ) –