복붙노트

[HADOOP] 다중 출력 경로 (Java - Hadoop - MapReduce)

HADOOP

다중 출력 경로 (Java - Hadoop - MapReduce)

두 가지 MapReduce 작업을 수행하고 두 번째 작업이 내 결과를 두 개의 서로 다른 디렉토리에있는 서로 다른 두 개의 파일에 기록 할 수있게하려고합니다. 어떤 의미에서 FileInputFormat.addInputPath (.., 다중 입력 경로)와 비슷한 것을 원하지만 출력을 원합니다.

나는 MapReduce를 완전히 처음 접했고, Hadoop 0.21.0에 코드를 작성하는 특이성이 있습니다. 내 Reduce 단계에서 context.write (..)를 사용하지만 여러 출력 경로를 제어하는 ​​방법을 보지 못했습니다 ...

시간 내 줘서 고마워 !

내 첫 번째 작업에서 내 reduceCode는 출력 방법 만 알고있다. (출력은 /../part* 파일에 들어있다.)하지만 이제는 출력에 따라 두 개의 precises 파일을 지정할 수있다. 열쇠) :

public static class NormalizeReducer extends Reducer<LongWritable, NetflixRating, LongWritable, NetflixUser> {
    public void reduce(LongWritable key, Iterable<NetflixRating> values, Context context) throws IOException, InterruptedException {
        NetflixUser user = new NetflixUser(key.get());
        for(NetflixRating r : values) {
            user.addRating(new NetflixRating(r));
        }
        user.normalizeRatings();
        user.reduceRatings();
        context.write(key, user);
    }
}

편집 : 그래서 당신이 언급 한 마지막 코멘트에서 방법을, 아마르. 그것이 작동하는지, HDFS에 다른 문제가 있는지는 잘 모르겠지만, 잊기 전에 문명을 위해서 나의 발견을 여기에 두자.

http://archive.cloudera.com/cdh/3/hadoop-0.20.2+228/api/org/apache/hadoop/mapreduce/lib/output/MultipleOutputs.html

해결법

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

    1.그래서 제가 말씀 드렸던 마지막 코멘트에서 방법을했습니다, 아마르. 그것이 작동하는지, HDFS에 다른 문제가 있는지는 잘 모르겠지만, 잊기 전에 문명을 위해 내 발견을 여기에 두자.

    그래서 제가 말씀 드렸던 마지막 코멘트에서 방법을했습니다, 아마르. 그것이 작동하는지, HDFS에 다른 문제가 있는지는 잘 모르겠지만, 잊기 전에 문명을 위해 내 발견을 여기에 두자.

    http://archive.cloudera.com/cdh/3/hadoop-0.20.2+228/api/org/apache/hadoop/mapreduce/lib/output/MultipleOutputs.html

    MultipleOutputs는 FormatOutputFormat 대신에 작동하지 않습니다. FormatOutputFormat을 사용하여 하나의 출력 경로를 정의한 다음 여러 MultipleOutputs를 사용하여 더 많은 파일을 추가 할 수 있습니다. addNamedOutput 메소드 : String namedOutput는 설명하는 단어 일뿐입니다. write 메소드의 경로 baseOutputPath arg를 실제로 정의합니다.

  2. from https://stackoverflow.com/questions/15909897/multiple-output-path-java-hadoop-mapreduce by cc-by-sa and MIT license