package com.mapreduce.count;
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.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 classCountDerived {//定义一个全局的计数器,每个map,reduce都可以访问到
enumCOUNT{
LINES_COUNT,
WORDS_COUNT
}public static voidmain(String[] args) throws Exception {//1 获取configuration
Configuration configuration = newConfiguration();//2 job
Job job=Job.getInstance(configuration);//3 作业jar包
job.setJarByClass(CountDerived.class);//4 map, reduce jar 包
job.setMapperClass(CounterMap.class);//5 map 输出类型
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(IntWritable.class);//6 最终 输出类型 (reducer)
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);//7 inputformatclass , outputformatclass 输入输出入文件类型 可能决定分片信息
job.setInputFormatClass(TextInputFormat.class);
job.setOutputFormatClass(TextOutputFormat.class);//8 输入输出文件路径
FileInputFormat.setInputPaths(job,new Path("d:/input"));
FileOutputFormat.setOutputPath(job,new Path("d:/output1"));//9 job提交
job.waitForCompletion(true);
}
}