복붙노트

[HADOOP] org.apache.hadoop.mapreduce.Job에 대한 Hadoop MultipleOutputFormat 지원

HADOOP

org.apache.hadoop.mapreduce.Job에 대한 Hadoop MultipleOutputFormat 지원

저는 Hadoop의 초보자입니다! 이제 hadoop 2.2.0과 함께 MultipleOutputFormat을 사용하려고하지만 더 이상 사용되지 않는 Mapper and Reducer (org.apache.hadoop.mapred.Reducer) 등을 사용하는 사용되지 않는 'JobConf'에서만 작동하는 것 같습니다. 새로운 'org.apache.hadoop.mapreduce.Job'으로 다중 출력 기능을 달성하는 방법에 대한 아이디어가 있습니까?

해결법

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

    1.@JudgeMental이 지적했듯이 MultipleOutputFormat은 이전 API (매핑 된) 만 지원하므로 새 API와 함께 MultipleOutputs를 사용해야합니다 (mapreduce). MultipleOutputs는 실제로 MultipleOutputFormat보다 더 많은 기능을 제공합니다.

    @JudgeMental이 지적했듯이 MultipleOutputFormat은 이전 API (매핑 된) 만 지원하므로 새 API와 함께 MultipleOutputs를 사용해야합니다 (mapreduce). MultipleOutputs는 실제로 MultipleOutputFormat보다 더 많은 기능을 제공합니다.

    따라서 MultipleOutputs에 더 많은 기능이 있어도 명명 기능을 유연하게 등록 할 수는 없습니다.

    MultipleOutputs를 사용하는 방법을 배우려면 완전한 예제가 포함 된이 문서를 살펴보십시오. 간단히 말해서 다음은 드라이버 클래스에 넣을 내용입니다.

    // Defines additional single text based output 'text' for the job
    MultipleOutputs.addNamedOutput(job, "text", TextOutputFormat.class, LongWritable.class, Text.class);
    
    // Defines additional sequence-file based output 'sequence' for the job
    MultipleOutputs.addNamedOutput(job, "seq", SequenceFileOutputFormat.class, LongWritable.class, Text.class);
    

    그리고 Mapper 또는 Reducer에서는 MultipleOutputs를 사용하여 설정 방법에서 MultipleOutputs를 초기화해야합니다. mos = new MultipleOutputs (context); 그런 다음 맵에서이를 사용하여 mos.write ( "seq", LongWritable (1), new Text ( "Bye"), "seq_a")로 함수를 줄일 수 있습니다. mos.close ()를 사용하여 정리 방법으로 닫는 것을 잊지 마십시오!

  2. from https://stackoverflow.com/questions/20209060/hadoop-multipleoutputformat-support-for-with-org-apache-hadoop-mapreduce-job by cc-by-sa and MIT license