Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package wordCount;
- import java.io.IOException;
- import org.apache.hadoop.conf.Configuration;
- import org.apache.hadoop.fs.Path;
- import org.apache.hadoop.io.IntWritable;
- import org.apache.hadoop.io.LongWritable;
- import org.apache.hadoop.io.Text;
- import org.apache.hadoop.mapreduce.Job;
- import org.apache.hadoop.mapreduce.Mapper;
- import org.apache.hadoop.mapreduce.Reducer;
- import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
- import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
- import org.apache.hadoop.util.GenericOptionsParser;
- import java.util.regex.Pattern;
- import java.util.regex.Matcher;
- public class WordCount {
- public static void main(String [] args) throws Exception
- {
- Configuration c=new Configuration();
- String[] files=new GenericOptionsParser(c,args).getRemainingArgs();
- Path input=new Path(files[0]);
- Path output=new Path(files[1]);
- Job j=new Job(c,"wordcount");
- j.setJarByClass(WordCount.class);
- j.setMapperClass(MapForWordCount.class);
- j.setReducerClass(ReduceForWordCount.class);
- j.setOutputKeyClass(Text.class);
- j.setOutputValueClass(IntWritable.class);
- FileInputFormat.addInputPath(j, input);
- FileOutputFormat.setOutputPath(j, output);
- System.exit(j.waitForCompletion(true)?0:1);
- }
- public static class MapForWordCount extends Mapper<LongWritable, Text, Text, IntWritable>{
- private static Pattern inputP = Pattern.compile("(.*) (\\d*)");
- public void map(LongWritable key, Text value, Context con) throws IOException, InterruptedException
- {
- String line = value.toString();
- Matcher input = inputP.matcher(line);
- if (input.matches()) {
- String cardSuit = input.group(1).toLowerCase();
- int cardValue = Integer.parseInt(input.group(2));
- con.write(new Text(cardSuit), new IntWritable(cardValue));
- }
- }
- }
- public static class ReduceForWordCount extends Reducer<Text, IntWritable, Text, IntWritable>
- {
- public void reduce(Text word, Iterable<IntWritable> values, Context con) throws IOException, InterruptedException
- {
- int sum = 0;
- for(IntWritable value : values)
- {
- sum += value.get();
- }
- con.write(word, new IntWritable(sum));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement