복붙노트

[HADOOP] 인수를 Hadoop 매퍼로 전달

HADOOP

인수를 Hadoop 매퍼로 전달

새로운 Hadoop API를 사용하고 일부 매개 변수 (소수 문자열)를 매퍼에게 전달하는 방법을 찾고 있습니다. 어떻게해야합니까?

이 솔루션은 기존 API에서 작동합니다.

JobConf job = (JobConf)getConf();
job.set("NumberOfDocuments", args[0]);

여기에서 "NumberOfDocuments"는 매개 변수의 이름이고 그 값은 명령 줄 인수 인 "args [0]"에서 읽습니다. 이 인수를 설정하면 다음과 같이 감속기 또는 매퍼에서 해당 인수를 검색 할 수 있습니다.

private static Long N;
public void configure(JobConf job) {
     N = Long.parseLong(job.get("NumberOfDocuments"));
}

까다로운 부분은 다음과 같은 매개 변수를 설정할 수 없다는 것입니다.

Configuration con = new Configuration();
con.set("NumberOfDocuments", args[0]);

해결법

  1. ==============================

    1.main 메소드에서 아래와 같이 필수 매개 변수를 설정하거나 작업을 실행하는 동안 -D 명령 행 옵션을 사용하십시오.

    main 메소드에서 아래와 같이 필수 매개 변수를 설정하거나 작업을 실행하는 동안 -D 명령 행 옵션을 사용하십시오.

    Configuration conf = new Configuration();
    conf.set("test", "123");
    
    Job job = new Job(conf);
    

    매퍼 / 감속기에서 매개 변수를 다음과 같이 얻습니다.

    Configuration conf = context.getConfiguration();
    String param = conf.get("test");
    
  2. from https://stackoverflow.com/questions/8244474/passing-arguments-to-hadoop-mappers by cc-by-sa and MIT license