jai包
<dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-core</artifactId> <version>1.2.1</version> </dependency>
2.x以后就拆成一些零散的包了,没有core包了
代码:
package org.conan.myhadoop.mr;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
//org.apache.hadoop.mapred 老系统的包
//org.apache.hadoop.mapreduce 新系统的包
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.Path;
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.input.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;
/*
* ModuleMapReduce Class
* 单纯的注释
*/
public class ModuleMapReduce extends Configured implements Tool {
/**
*
* ModuleMapper Class 不仅有注释的功效而且你鼠标放在你注释的方法上面他会把你注释的内容显示出来,
*
*/
public static class ModuleMapper extends
Mapper<LongWritable, Text, LongWritable, Text>
{
@Override
public void setup(Context context) throws IOException,
InterruptedException {
super.setup(context);
}
@Override
public void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
// TODO
}
@Override
public void cleanup(Context context) throws IOException,
InterruptedException {
super.cleanup(context);
}
}
/**
*
* ModuleReducer Class
*
*/
public static class ModuleReducer extends
Reducer<LongWritable, Text, LongWritable, Text> {
@Override
public void setup(Context context) throws IOException,
InterruptedException {
// TODO Auto-generated method stub
super.setup(context);
}
@Override
protected void reduce(LongWritable key, Iterable<Text> value,
Context context) throws IOException, InterruptedException {
// TODO
}
@Override
protected void cleanup(Context context) throws IOException,
InterruptedException {
super.cleanup(context);
}
}
// Driver 驱动
// @Override //实现接口时关键字1.5和1.7的JDK都会报错,只有1.6不报错
public int run(String[] args) throws Exception {
Job job = parseInputAndOutput(this, this.getConf(), args);
// 2.set job
// step 1:set input
job.setInputFormatClass(TextInputFormat.class);
// step 3:set mappper class
job.setMapperClass(ModuleMapper.class);
// step 4:set mapout key/value class
job.setMapOutputKeyClass(LongWritable.class);
job.setMapOutputValueClass(Text.class);
// step 5:set shuffle(sort,combiner,group)
// set sort
job.setSortComparatorClass(LongWritable.Comparator.class);
// set combiner(optional,default is unset)必须是Reducer的子类
job.setCombinerClass(ModuleReducer.class);
// set grouping
job.setGroupingComparatorClass(LongWritable.Comparator.class);
// step 6 set reducer class
job.setReducerClass(ModuleReducer.class);
// step 7:set job output key/value class
job.setOutputKeyClass(LongWritable.class);
job.setOutputValueClass(Text.class);
// step 8:set output format
job.setOutputFormatClass(FileOutputFormat.class);
// step 10: submit job
Boolean isCompletion = job.waitForCompletion(true);// 提交job
return isCompletion ? 0 : 1;
}
public Job parseInputAndOutput(Tool tool, Configuration conf, String[] args)
throws IOException {
// 输入参数的合法性
if (args.length != 2) {
System.err.printf(
"Usage: %s [generic options] <input> <output> \n ", tool
.getClass().getSimpleName());
//%s表示输出字符串,也就是将后面的字符串替换模式中的%s
ToolRunner.printGenericCommandUsage(System.err);
return null;
}
// 1.create job
Job job = Job.getInstance(conf, this.getClass().getSimpleName());
job.setJarByClass(ModuleMapReduce.class);
// step 2:set input path
Path inputPath = new Path(args[0]);
FileInputFormat.addInputPath(job, inputPath);
// step 9:set output path
Path outputPath = new Path(args[0]);
FileOutputFormat.setOutputPath(job, outputPath);
return job;
}
public static void main(String[] args) {
try {
int status = ToolRunner.run(new ModuleMapReduce(), args);// 返回值即为isCompletion ? 0 : 1
System.exit(status);// System.exit(0)中断虚拟机的运行,退出应用程序,0表示没有异常正常退出。
} catch (Exception e) {
e.printStackTrace();
}
}
}本文出自 “一无所有 QQ:934033381” 博客,请务必保留此出处http://tianxingzhe.blog.51cto.com/3390077/1698489
原文:http://tianxingzhe.blog.51cto.com/3390077/1698489