次の順序で一連の整数をソートしようとしています。
A 2
B 9
C 4
....
....
Z 42
以下は Mapper と Reducer のコードです。
public static class MapClass extends MapReduceBase implements Mapper<Text, Text, IntWritable, Text>
{
public void map(Text key, Text value, OutputCollector<IntWritable, Text> output, Reporter reporter) throws IOException
{
output.collect(new IntWritable(Integer.parseInt(value.toString())), key);
}
}
public static class Reduce extends MapReduceBase implements Reducer<IntWritable, Text, IntWritable, Text>
{
public void reduce(IntWritable key, Iterator<Text> values, OutputCollector<IntWritable, Text> output, Reporter reporter) throws IOException
{
output.collect(key, new Text(""));
}
}
しかし、出力は多くの余分な整数を生成しています。コードの何が問題なのか誰か教えてもらえますか?
また、可能であれば、MapReduce を使用した整数ソートの良い例を教えてください。
編集:
job.setInputFormat(KeyValueTextInputFormat.class);
job.setOutputFormat(TextOutputFormat.class);
job.setOutputKeyClass(IntWritable.class);
job.setOutputValueClass(Text.class);