MapReduce 의 Job 도구 류 개발

[toc]
MapReduce 의 Job 도구 류 개발
MapReduce 프로그램 이 Mapper 와 Reducer 드라이버 를 쓸 때 중복 코드 가 많 기 때문에 추출 하여 도구 류 로 쓸 수 있 고, 그 다음 에 MapReduce 프로그램 을 쓸 때 이 도구 류 를 사용 합 니 다.
Job 도구 류 개발
프로그램 코드 는 다음 과 같 습 니 다:
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;
    }
}

좋은 웹페이지 즐겨찾기