我无法将“job.setNumMapTasks(int)”添加到我的MapReduce程序的驱动程序中。当我尝试添加它时,我收到一个编译错误,说明“作业类型未定义setNumMapTasks(int)”。但是,我能够添加等效的reducer,“job.setNumReduceTasks(int)”。在我看来,如果我可以添加一个,我应该能够添加另一个。以下是我的司机。任何建议都非常受欢迎。
public int run(String[] args) throws Exception {
Configuration conf = getConf();
Job job = new Job(conf, "PiCalc");
job.setJarByClass(PiCalc.class);
Path in = new Path(args[0]);
Path out = new Path(args[1]);
FileInputFormat.setInputPaths(job, in);
FileOutputFormat.setOutputPath(job, out);
job.setJobName("PiCalc");
job.setNumMapTasks(20);
job.setNumReduceTasks(10);
job.setMapperClass(MapClass.class);
job.setReducerClass(Reduce.class);
job.setInputFormatClass(KeyValueTextInputFormat.class);
job.setOutputFormatClass(TextOutputFormat.class);
job.setOutputKeyClass(IntWritable.class);
job.setOutputValueClass(IntWritable.class);
System.exit(job.waitForCompletion(true)?0:1);
return 0;
}
答案 0 :(得分:0)
无需为作业设置地图任务的数量。 map任务的数量等于输入文件中的块数。
默认情况下,reducers的数量等于1,除非明确指定。