2015-04-07 2 views
0

Я установил среду кластеров hadoop (Master & Slave). Работает гладко.Запуск WordCount без редуктора в hadoop

Я пробовал wordcount и grep используя (hadoop.example.jar) файл, а также отлично работает.

Теперь я хочу отредактировать (hasoop.example.jar), чтобы запустить только mapper без редуктора. Есть ли способ сделать это ???

Я прочитал несколько статей, в которых говорится, что мне нужно установить значение в ноль setNumReducerTask (0), но я не знаю, как это сделать? используя файл (hasoop.example.jar).

ответ

0

Вы не можете изменить файл hadoop.example.jar.

Вам необходимо создать свой собственный код и экспортировать его в виде файла jar.

Измененный код WordCount должен быть:

package org.myorg; 

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

import org.apache.hadoop.fs.Path; 
import org.apache.hadoop.conf.*; 
import org.apache.hadoop.io.*; 
import org.apache.hadoop.mapreduce.*; 
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; 
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat; 
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; 
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat; 

public class WordCount { 

public static class Map extends Mapper<LongWritable, Text, Text, IntWritable { 
private final static IntWritable one = new IntWritable(1); 
private Text word = new Text(); 

public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { 
    String line = value.toString(); 
    StringTokenizer tokenizer = new StringTokenizer(line); 
    while (tokenizer.hasMoreTokens()) { 
     word.set(tokenizer.nextToken()); 
     context.write(word, one); 
    } 
} 
} 

public static class Reduce extends Reducer<Text, IntWritable, Text, IntWritable> { 

public void reduce(Text key, Iterable<IntWritable> values, Context context) 
    throws IOException, InterruptedException { 
    int sum = 0; 
    for (IntWritable val : values) { 
     sum += val.get(); 
    } 
    context.write(key, new IntWritable(sum)); 
} 
} 

public static void main(String[] args) throws Exception { 
Configuration conf = new Configuration(); 
Job job = new Job(conf, "wordcount"); 

job.setOutputKeyClass(Text.class); 
job.setOutputValueClass(IntWritable.class); 

job.setMapperClass(Map.class); 
job.setReducerClass(Reduce.class); 
**job.setNumReduceTasks(0); ** 

job.setInputFormatClass(TextInputFormat.class); 
job.setOutputFormatClass(TextOutputFormat.class); 

FileInputFormat.addInputPath(job, new Path(args[0])); 
FileOutputFormat.setOutputPath(job, new Path(args[1])); 

job.waitForCompletion(true); 
} 

} 

The origianl source code

Смежные вопросы