Несколько выходных путей (Java - Hadoop - MapReduce)
Я выполняю две работы в MapReduce и хочу, чтобы вторая работа позволила записать мой результат в два разных файла, в двух разных каталогах. Я хотел бы что-то похожее на FileInputFormat.addInputPath (.., несколько путей ввода) в некотором смысле, но для вывода.
Я совершенно новичок в MapReduce, и у меня есть особенность, чтобы написать свой код в Hadoop 0.21.0, который я используюcontext.write(..)
в моем шаге Reduce, но я не вижу, как управлять несколькими путями вывода ...
Спасибо за ваше время !
Мой limitCode из моей первой работы, чтобы показать вам, что я знаю только, как выводить (он идет в файл /../part*. Но теперь я хотел бы иметь возможность указать два точных файла для разных выходных данных, в зависимости от ключ) :
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, но прежде чем я забуду, давайте разместим здесь мои открытия ради цивилизации:
MultipleOutputs НЕ действует вместо FormatOutputFormat. Вы определяете один выходной путь с FormatOutputFormat, а затем вы можете добавить еще много с несколькими MultipleOutputs.Метод addNamedOutput: String namedOutput - это просто слово, которое описывает.Вы фактически определяете путь в методе записи, аргумент String baseOutputPath.