복붙노트

[HADOOP] 여러 감속기가 Hadoop에서 하나의 부품 파일 만 출력하는 방법은 무엇입니까?

HADOOP

여러 감속기가 Hadoop에서 하나의 부품 파일 만 출력하는 방법은 무엇입니까?

제 맵 축소 작업에서는 감속기 작업을 구현하는 데 4 개의 감속기를 사용합니다. 이렇게하면 최종 출력물이 4 개의 부품 파일을 생성합니다. : part-0000 part-0001 part-0002 part-0003

내 질문은 어떻게 hadoop 작동하도록 4 reducers 사용 있지만 하나의 부분 파일을 출력하도록 hadoop 구성을 설정할 수 있습니다?

해결법

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

    1.이것은 hadoop에서 예상되는 동작이 아닙니다. 그러나 여기서 Multiple Output을 사용할 수 있습니다. 하나의 이름이 지정된 출력을 만들어 모든 출력기에서 사용하여 하나의 파일 자체에서 최종 출력을 얻습니다. javadoc 자체가 다음을 제안합니다.

    이것은 hadoop에서 예상되는 동작이 아닙니다. 그러나 여기서 Multiple Output을 사용할 수 있습니다. 하나의 이름이 지정된 출력을 만들어 모든 출력기에서 사용하여 하나의 파일 자체에서 최종 출력을 얻습니다. javadoc 자체가 다음을 제안합니다.

     JobConf conf = new JobConf();
    
     conf.setInputPath(inDir);
     FileOutputFormat.setOutputPath(conf, outDir);
    
     conf.setMapperClass(MOMap.class);
     conf.setReducerClass(MOReduce.class);
     ...
    
     // Defines additional single text based output 'text' for the job
     MultipleOutputs.addNamedOutput(conf, "text", TextOutputFormat.class,
     LongWritable.class, Text.class);;
     ...
    
     JobClient jc = new JobClient();
     RunningJob job = jc.submitJob(conf);
    
     ...
    

    작업 구성 사용 패턴은 다음과 같습니다.

    public class MOReduce implements
       Reducer<WritableComparable, Writable> {
     private MultipleOutputs mos;
    
     public void configure(JobConf conf) {
     ...
     mos = new MultipleOutputs(conf);
     }
    
     public void reduce(WritableComparable key, Iterator<Writable> values,
     OutputCollector output, Reporter reporter)
     throws IOException {
     ...
     mos.getCollector("text", reporter).collect(key, new Text("Hello"));
     ...
     }
    
     public void close() throws IOException {
     mos.close();
     ...
     }
    
     }
    

    새로운 mapreduce API를 사용하는 경우 여기를 참조하십시오.

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

    2.

    MultipleOutputs.addNamedOutput(conf, "text", TextOutputFormat.class,
     LongWritable.class, Text.class);
    

    여기서 텍스트는 출력 디렉토리 또는 텍스트라는 단일 대형 파일입니까?

  3. from https://stackoverflow.com/questions/15346143/how-do-multiple-reducers-output-only-one-part-file-in-hadoop by cc-by-sa and MIT license