简单的MapReduce

package zzti.sq.wordcount;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.Path;

import org.apache.hadoop.io.IntWritable;

import org.apache.hadoop.mapreduce.Job;

import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;

import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

import org.apache.hadoop.io.Text;

public class MyDriver {

public static void main(String[] args) throws Exception {

System.setProperty("HADOOP_USER_NAME", "root");

//配置

Configuration conf = new Configuration();

conf.set("mapreduce.app-submission.cross-platform", "true");

Job job = Job.getInstance(conf, "go");

job.setJar("/Users/songqi/Desktop/sq.jar");

job.setJarByClass(MyDriver.class);

job.setMapperClass(MyMapper.class);

job.setReducerClass(MyReducer.class);

job.setMapOutputKeyClass(Text.class);

job.setMapOutputValueClass(IntWritable.class);

job.setOutputKeyClass(Text.class);

job.setOutputValueClass(IntWritable.class);

FileInputFormat.setInputPaths(job, new Path("/1.txt"));

FileOutputFormat.setOutputPath(job, new Path("/1/7/output"));

job.waitForCompletion(true);

System.out.println("完毕");

}

}

package zzti.sq.wordcount;

import java.io.IOException;

import org.apache.hadoop.io.IntWritable;

import org.apache.hadoop.io.LongWritable;

import org.apache.hadoop.io.Text;

import org.apache.hadoop.mapreduce.Mapper;

public class MyMapper extends Mapper<LongWritable, Text, Text, IntWritable>{

@Override

protected void map(LongWritable key, Text value, Context context)

throws IOException, InterruptedException {

String words=value.toString();

String [] infos=words.split(" ");

for(String word:infos) {

context.write(new Text(word),new IntWritable(1));

}

}

}

package zzti.sq.wordcount;

import java.io.IOException;

import org.apache.hadoop.io.IntWritable;

import org.apache.hadoop.io.Text;

import org.apache.hadoop.mapreduce.Reducer;

public class MyReducer extends Reducer<Text, IntWritable, Text, IntWritable>{

protected void reduce(Text key, Iterable<IntWritable> values,

Context context) throws IOException, InterruptedException {

int sum=0;

for(IntWritable count:values) {

sum +=count.get();

}

context.write(new Text(key), new IntWritable(sum));

}

}

需要注意的是导的包  ,代码的话这都是很简单的代码/吐血 

log4j的配置

log4j.rootLogger=INFO, stdout  

log4j.appender.stdout=org.apache.log4j.ConsoleAppender  

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout  

log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n  

log4j.appender.logfile=org.apache.log4j.FileAppender  

log4j.appender.logfile.File=target/spring.log  

log4j.appender.logfile.layout=org.apache.log4j.PatternLayout  

log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n  

猜你喜欢

转载自www.cnblogs.com/geek-sq/p/9228391.html