MR - 사용자 정의 옵션, 매퍼 구현

Posted 01 19, 2014 13:08, Filed under: BigData/MapReduce


MR - 사용자 정의 옵션, 매퍼 구현


# 사용자 정의 옵션(GenericOptionsParser, Tool, ToolRunner)

사용자가 맵리듀스 잡을 실행할 때 명령어 옵션으로 입력한 파라미터명(worType)을 확인.

# 매퍼 클래스
public class TestMapper extends Mapper<LongWritable, Text, Text, IntWritable> {

    // 작업 구분
    private String workType;

    // map 출력값
    private final static IntWritable outputValue = new IntWritable(1);

    // map 출력키
    private Text outputKey = new Text();

    // setup 메서드 재정의
    // workType의 받게될 파라미터 확인
    @Override
    protected void setup(Context context) throws IOException, InterruptedException {
        workType = context.getConfiguration().get("workType");
    }

    public void map(LongWritable key, Text value, Context context)
            throws IOException, InterruptedException {
        // departure
        if(workType.equals("departure")){
            // workType 파라미터의 값(departure)에 따른 작업
        }else if(workType.equals("arrival")){
            // workType 파라미터의 값(arrival)에 따른 작업
        }
    }
}


# 드라이버 클래스
public class TestDriver extends Configured implements Tool {

    // int 타입을 반환하는 run 메서드 구현
    public int run(String[] args) throws Exception {
/**
 *  # getRemaiingArgs 메서드를 호출해 문자열 배열을 생성.
 *    getRemaiingArgs에서 반환하는 배열은 GenericOptionsParser에서 제공하는
 *    파라미터를 제외한 나머지 파라미터를 의미함.(사용자 정의 설정에 포함)
 *    > -conf, -D, -fs와 같은 옵션을 붙여서 설정한 파라미터는 모두 제외됨.
 *   예)  
 *   잡 실행 : bin/hadoop jar hadoop.test.TestDriver -conf -D -fs input output
 *   잡 반환 : bin/hadoop jar hadoop.test.TestDriver input output
 */
        String[] otherArgs = new GenericOptionsParser(getConf(), args).getRemainingArgs();

        // 입출력 데이터 경로 확인
        if (otherArgs.length != 2) {
            System.err.println("Usage: TestDriver <in> <out>");
            System.exit(2);
        }

        // Job 이름 설정
        Job job = new Job(getConf(), "TestDriver");

        // 입출력 데이터 경로 설정
        FileInputFormat.addInputPath(job,new Path(otherArgs[0]));
        FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));        
        .
        .
        .
        job.waitForCompletion(true);
        return 0;
    }
    
    public static void main(String[] args) throws Exception {
        // Tool 인터페이스 실행 : run 메서드는 ToolRunner에서만 호출할 수 있음.
        int res = ToolRunner.run(new Configuration(), new TestDriver(), args);
        System.out.println("## RESULT:" + res);
    }    
}


# 드라이버 클래스 실행
$ bin/hadoop jar TestDriver.jar hadoop.test.TestDriver -D workType=departure input output



참고 : 시작하세요! 하둡 프로그래밍





※ 위 내용은, 여러 자료를 참고하거나 제가 주관적으로 정리한 것입니다.
   잘못된 정보나 보완이 필요한 부분을, 댓글 또는 메일로 보내주시면 많은 도움이 되겠습니다.
01 19, 2014 13:08 01 19, 2014 13:08


Trackback URL : http://develop.sunshiny.co.kr/trackback/992

Leave a comment


Recent Posts

  1. HDFS - Python Encoding 오류 처리
  2. HP - Vertica ROS Container 관련 오류...
  3. HDFS - Hive 실행시 System Time 오류
  4. HP - Vertica 사용자 쿼리 이력 테이블...
  5. Client에서 HDFS 환경의 데이터 처리시...

Recent Comments

  1. 안녕하세요^^ 배그핵
  2. 안녕하세요^^ 도움이 되셨다니, 저... sunshiny
  3. 정말 큰 도움이 되었습니다.. 감사합... 사랑은
  4. 네, 안녕하세요. 댓글 남겨 주셔서... sunshiny
  5. 감사합니다 많은 도움 되었습니다!ㅎㅎ 프리시퀸스

Recent Trackbacks

  1. how to broadcast your own tv station how to broadcast your own tv station %M
  2. elapsed time clock for operating r... elapsed time clock for operating r... %M
  3. Mysql - mysql 설치후 Character set... 멀고 가까움이 다르기 때문 %M

Calendar

«   12 2019   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

Bookmarks

  1. 위키피디아
  2. MysqlKorea
  3. 오라클 클럽
  4. API - Java
  5. Apache Hadoop API
  6. Apache Software Foundation
  7. HDFS 생태계 솔루션
  8. DNSBL - Spam Database Lookup
  9. Ready System
  10. Solaris Freeware
  11. Linux-Site
  12. 윈디하나의 솔라나라

Site Stats

TOTAL 2780499 HIT
TODAY 82 HIT
YESTERDAY 1360 HIT