1

MapReduce プログラムのドライバーに「job.setNumMapTasks(int)」を追加できません。追加しようとすると、「ジョブ タイプに対して setNumMapTasks(int) が定義されていません」というコンパイル エラーが発生します。ただし、同等のレデューサー「job.setNumReduceTasks(int)」を追加できます。1つを追加できれば、もう1つを追加できるはずです。以下は私のドライバーです。どんな提案でも大歓迎です。

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

1 に答える 1

0

ジョブのマップ タスクの数を設定する必要はありません。マップ タスクの数は、入力ファイル内のブロックの数と同じです。

デフォルトでは、明示的に指定されていない限り、リデューサーの数は 1 です。

于 2013-04-12T03:23:59.510 に答える