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

« Previous : 1 : ... 50 : 51 : 52 : 53 : 54 : 55 : 56 : 57 : 58 : ... 648 : Next »

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. Right away I am ready to do my bre... 골목게임 11 17,
  2. Terrific article! That is the type... 선릉야구장 11 16,
  3. Yes! Finally someone writes about /. / 11 16,
  4. Круто, круто! Некот... карточные игры на... 11 13,
  5. 안녕하세요^^ 배그핵

Recent Trackbacks

  1. master djs bozeman master djs bozeman %M
  2. wedding dj bozeman mt wedding dj bozeman mt 17 11
  3. joes dj bozeman joes dj bozeman 17 11
  4. Mysql - mysql 설치후 Character set... 멀고 가까움이 다르기 때문 %M

Calendar

«   11 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

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 2755890 HIT
TODAY 132 HIT
YESTERDAY 638 HIT