Skip to content

Instantly share code, notes, and snippets.

@NicoHinderling
Forked from avegancafe/mappy
Created May 2, 2015 19:55
Show Gist options
  • Save NicoHinderling/2946f63e057a811a8c34 to your computer and use it in GitHub Desktop.
Save NicoHinderling/2946f63e057a811a8c34 to your computer and use it in GitHub Desktop.
package wordcount;
import java.io.IOException;
import java.util.StringTokenizer;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
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;
public class fourB {
public static class TokenizerMapper
extends Mapper<Object, Text, IntWritable, IntWritable>{
private final static IntWritable zero = new IntWritable(0);
private final static IntWritable one = new IntWritable(1);
private Text missing = new Text();
private Text word = new Text();
public void map(Object key, Text value, Context context
) throws IOException, InterruptedException {
StringTokenizer itr = new StringTokenizer(value.toString());
while (itr.hasMoreTokens()) {
String wordy = itr.nextToken();
for (int m = 0; m < 15; m++){
if(m == wordy.length()){
int counter = 0;
for(int x = 0; x < wordy.length(); x++){
if(wordy.charAt(x)== 'a' || wordy.charAt(x)== 'e' || wordy.charAt(x)== 'i' || wordy.charAt(x)== 'o' || wordy.charAt(x)== 'u' || wordy.charAt(x)== 'y' || wordy.charAt(x)== 'A' || wordy.charAt(x)== 'E' || wordy.charAt(x)== 'I' || wordy.charAt(x)== 'O' || wordy.charAt(x)== 'U' || wordy.charAt(x)== 'Y'){
counter++;
}
}
System.out.println(wordy + " of length " + m + " contains " + counter + " values!");
context.write(new IntWriteable (m), new IntWriteable(counter));
}
context.write(new IntWritable (m), zero);
}
}
}
}
public static class IntSumReducer
extends Reducer<IntWritable,IntWritable,Text,DoubleWritable> {
public void reduce(IntWritable key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
double sum = 0;
double denom = 0;
int[] arr = new int[key.get ()+1]
for (IntWritable val : values) {
denom++;
arr[val.get ()]++;
}
Text fin = new Text ();
for (int i = 0; i < arr.length (); i++) {
fin.set(key.toString () + " " + i)
context.write ( fin, new DoubleWritable(arr[i] / denom) );
}
}
}
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
if (otherArgs.length != 2) {
System.err.println("Usage: wordcount <in> <out>");
System.exit(2);
}
Job job = new Job(conf, "word count");
job.setJarByClass(WordCount.class);
job.setMapperClass(TokenizerMapper.class);
job.setCombinerClass(IntSumReducer.class);
job.setReducerClass(IntSumReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment