[HADOOP] 지도 축소를 위해 여러 개의 출력 파일을 가질 수 있습니까?
HADOOP지도 축소를 위해 여러 개의 출력 파일을 가질 수 있습니까?
내 입력 파일에는 국가로 열이 있습니다. 이제는 특정 국가의 레코드를 해당 국가의 파일 이름에 배치하는 작업을 수행합니다. Map-reduce에서이 작업을 수행 할 수 있습니까? 이와 관련하여 의견을 공유하십시오.
해결법
-
==============================
1.예, hadoop에서 generateFileNameForKeyValue 메소드를 사용하여 MultipleOutputFormat을 사용하여 정확히 수행 할 수 있습니다.
예, hadoop에서 generateFileNameForKeyValue 메소드를 사용하여 MultipleOutputFormat을 사용하여 정확히 수행 할 수 있습니다.
국가 이름을 키로 사용하고 레코드를 값으로 사용하면 필요에 따라 정확하게 작동해야합니다.
-
==============================
2.새 API를 사용하는 경우 MultipleOutputs 클래스를 살펴 봐야합니다. 이 클래스 안에 예제가 있습니다.
새 API를 사용하는 경우 MultipleOutputs 클래스를 살펴 봐야합니다. 이 클래스 안에 예제가 있습니다.
작업 제출에 대한 사용 패턴 :
Job job = new Job(); FileInputFormat.setInputPath(job, inDir); FileOutputFormat.setOutputPath(job, outDir); job.setMapperClass(MOMap.class); job.setReducerClass(MOReduce.class); ... // 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); ... job.waitForCompletion(true); ...
감속기의 사용법 :
String generateFileName(K k, V v) { return k.toString() + "_" + v.toString(); } public class MOReduce extends Reducer { private MultipleOutputs mos; public void setup(Context context) { ... mos = new MultipleOutputs(context); } public void reduce(WritableComparable key, Iterator values, Context context) throws IOException { ... mos.write("text", , key, new Text("Hello")); mos.write("seq", LongWritable(1), new Text("Bye"), "seq_a"); mos.write("seq", LongWritable(2), key, new Text("Chau"), "seq_b"); mos.write(key, new Text("value"), generateFileName(key, new Text("value"))); ... } public void cleanup(Context) throws IOException { mos.close(); ... } }
from https://stackoverflow.com/questions/16438615/is-it-possible-to-have-multiple-output-files-for-a-map-reduce by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Maven - 테스트의 다른 종속성 버전 (0) | 2019.07.01 |
---|---|
[HADOOP] Hadoop HDFS : 기록중인 시퀀스 파일 읽기 (0) | 2019.07.01 |
[HADOOP] 주어진 컬럼 이름으로 모든 테이블을 검색하고 Hadoop / Hive에이 컬럼 이름을 가진 테이블을 반환하는 방법은 무엇입니까? (0) | 2019.07.01 |
[HADOOP] hadoop에서 enum으로 mapOutputValueClass를 설정하는 방법 (0) | 2019.07.01 |
[HADOOP] Hadoop Directory with Spaces (0) | 2019.07.01 |