Wiele ścieżek wyjściowych (Java - Hadoop - MapReduce)

Wykonuję dwa zadania MapReduce i chcę, aby drugie zadanie mogło zapisać mój wynik w dwóch różnych plikach, w dwóch różnych katalogach. Chciałbym coś podobnego do FileInputFormat.addInputPath (.., wiele ścieżek wejściowych) w pewnym sensie, ale dla wyjścia.

Jestem zupełnie nowy w MapReduce i mam specyfikę do napisania mojego kodu w Hadoop 0.21.0, którego używamcontext.write(..) w moim kroku Zmniejsz, ale nie widzę, jak kontrolować wiele ścieżek wyjściowych ...

Dziękuję za Twój czas !

Mój redukujący kod z mojej pierwszej pracy, aby pokazać ci, że wiem tylko, jak wypisać (trafia do pliku /../part*. Ale teraz chciałbym móc określić dwa precyzyjne pliki dla różnych wyników, w zależności od klucz) :

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);
    }
}

EDYTOWAĆ: więc zrobiłem metodę w ostatnim komentarzu, jak wspomniałeś, Amar. Nie wiem, czy to działa, mam inny problem z moim HDFS, ale zanim zapomnę, umieśćmy tutaj moje odkrycia dla dobra cywilizacji:

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

Wielokrotne wyjścia NIE działają w miejsce FormatOutputFormat. Definiujesz jedną ścieżkę wyjściową z FormatOutputFormat, a następnie możesz dodać wiele więcej z wieloma wielokrotnymi wyjściami.addNamedOutput method: String namedOutput to tylko słowo, które opisuje.Ścieżkę definiujesz faktycznie w metodzie write, argumencie String baseOutputPath.

questionAnswers(1)

yourAnswerToTheQuestion