복붙노트

[HADOOP] 하둡에서지도 함수에 매개 변수 전달하기

HADOOP

하둡에서지도 함수에 매개 변수 전달하기

나는 Hadoop을 처음 사용합니다. mapper 클래스의 맵 함수 내에서 main 함수 (Java 프로그램)의 명령 행 인수에 액세스하려고합니다. 이 방법을 제안하십시오.

해결법

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

    1.Hadoop 0.20은 새로운 MR API를 도입했기 때문에 새 API (o.a.h.mapreduce 패키지)와 기존 MR API (o.a.h.mapred)간에 기능상의 차이는 거의 없습니다. 단, 새 API를 사용하여 맵퍼 및 축소 기 내에서 데이터를 가져올 수 있습니다. Arnon이 언급 한 것은 이전 API를 사용하는 것입니다.

    Hadoop 0.20은 새로운 MR API를 도입했기 때문에 새 API (o.a.h.mapreduce 패키지)와 기존 MR API (o.a.h.mapred)간에 기능상의 차이는 거의 없습니다. 단, 새 API를 사용하여 맵퍼 및 축소 기 내에서 데이터를 가져올 수 있습니다. Arnon이 언급 한 것은 이전 API를 사용하는 것입니다.

    새로운 API와 이전 API를 사용하여 매개 변수를 전달하려면이 도움말을 참조하십시오.

  2. ==============================

    2.구성에 매개 변수를 매달아 전달할 수 있습니다.

    구성에 매개 변수를 매달아 전달할 수 있습니다.

     JobConf job = new JobConf(new Configuration(), TheJob.class);
     job.setLong("Param Name",longValue)
    

    Configuration 클래스에는 몇 가지 set 메소드 (Long, Int, Strings 등)가 있으므로 여러 유형의 매개 변수를 전달할 수 있습니다. 지도 작업에서 컨텍스트 (getConfiguration)에서 구성을 가져올 수 있습니다.

  3. ==============================

    3.최근 Hadoop (예 : 0.2 이상> 2.4 이상)에서 작업 구성 중에 다음과 같은 옵션을 설정할 수 있습니다.

    최근 Hadoop (예 : 0.2 이상> 2.4 이상)에서 작업 구성 중에 다음과 같은 옵션을 설정할 수 있습니다.

    conf = new JobConf(MyJarClass);
    conf.set("myStringOption", "myStringValue");
    conf.set("myIntOption", 42);
    

    그리고 매퍼 / 리듀서 클래스의 configure () 메소드에서 해당 옵션을 검색하십시오 :

    public static class MyMapper extends MapReduceBase implements Mapper<...> {
    
        Integer myIntegerOption;
        String myStringOption;
    
        @Override
        public void configure(JobConf job) {
            super.configure(job);
            myIntegerOption = job.getInt("myIntOption", -1); 
            // nb: last arg is the default value if option is not set
            myStringOption = job.get("myStringOption", "notSet");
        }
    
        @Override
        public void map(... key, ... value, 
                        OutputCollector<..> output, Reporter reporter) throws IOException {
            // here you can use the options in your processing
            processRecord(key, value, myIntOption, myStringOption);
        }
    
    }
    

    configure ()는 레코드가 맵에 전달되거나 감축되기 전에 한 번 호출됩니다.

  4. from https://stackoverflow.com/questions/8457183/passing-parameters-to-map-function-in-hadoop by cc-by-sa and MIT license