[toc]
创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:做网站、成都网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的平罗网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!在MapReduce程序写Mapper和Reducer的驱动程序时,有很多代码都是重复性代码,因此可以将其提取出来写成一个工具类,后面再写MapReduce程序时都会使用这个工具类。
程序代码如下:
package com.uplooking.bigdata.common.utils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.mapreduce.*;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import java.io.IOException;
public class MapReduceJobUtil {
public static Job buildJob(Configuration conf,
Class> jobClazz,
String inputpath,
Class extends InputFormat> inputFormat,
Class extends Mapper> mapperClass,
Class> mapKeyClass,
Class> mapValueClass,
Path outputpath,
Class extends OutputFormat> outputFormat,
Class extends Reducer> reducerClass,
Class> outkeyClass,
Class> outvalueClass) throws IOException {
String jobName = jobClazz.getSimpleName();
Job job = Job.getInstance(conf, jobName);
//设置job运行的jar
job.setJarByClass(jobClazz);
//设置整个程序的输入
FileInputFormat.setInputPaths(job, inputpath);
job.setInputFormatClass(inputFormat);//就是设置如何将输入文件解析成一行一行内容的解析类
//设置mapper
job.setMapperClass(mapperClass);
job.setMapOutputKeyClass(mapKeyClass);
job.setMapOutputValueClass(mapValueClass);
//设置整个程序的输出
outputpath.getFileSystem(conf).delete(outputpath, true);//如果当前输出目录存在,删除之,以避免.FileAlreadyExistsException
FileOutputFormat.setOutputPath(job, outputpath);
job.setOutputFormatClass(outputFormat);
//设置reducer,如果有才设置,没有的话就不用设置
if (null != reducerClass) {
job.setReducerClass(reducerClass);
job.setOutputKeyClass(outkeyClass);
job.setOutputValueClass(outvalueClass);
}
return job;
}
}
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。