我做了两个MapReduce工作,我想第二个作业才能够到我的结果写入到两个不同的文件,在两个不同的目录中。 我想在某种意义上类似于FileInputFormat.addInputPath东西(..,多输入路径),但输出。
我完全新的MapReduce的,和我有特异性写我的代码的Hadoop 0.21.0我用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
- MultipleOutputs不到位FormatOutputFormat的作用。 您可以定义一个输出路径与FormatOutputFormat,然后你可以添加更多的多MultipleOutputs。
- addNamedOutput方法:字符串namedOutput只是谁形容一个字。
- 你在写方法,字符串baseOutputPath ARG实际上定义的路径。