我的问题可能已被提出,但我无法找到问题的明确答案。
我的MapReduce是一个基本的WordCount。我当前的输出文件是:
// filename : 'part-r-00000'
789 a
755 #c
456 d
123 #b
如何更改输出文件名?
然后,是否可以有2个输出文件:
// First output file
789 a
456 d
// Second output file
123 #b
755 #c
这是我的减少类:
public static class SortReducer extends Reducer<IntWritable, Text, IntWritable, Text> {
public void reduce(IntWritable key, Text value, Context context) throws IOException, InterruptedException {
context.write(key, value);
}
}
这是我的分区成员类:
public class TweetPartitionner extends Partitioner<Text, IntWritable>{
@Override
public int getPartition(Text a_key, IntWritable a_value, int a_nbPartitions) {
if(a_key.toString().startsWith("#"))
return 1;
return 0;
}
}
非常感谢!
答案 0 :(得分:1)
关于如何更改输出文件名的其他问题,您可以查看http://hadoop.apache.org/docs/stable/api/org/apache/hadoop/mapreduce/lib/output/MultipleOutputs.html#write(java.lang.String,K,V)。
答案 1 :(得分:0)
在您的工作档案集
中job.setNumReduceTasks(2);
来自mapper emit
a 789
#c 755
d 456
#b 123
编写分区程序,将分区程序添加到作业配置中,在分区程序中检查密钥是否以#start 1开头,否则为0
在reducer交换密钥和值
中