public static class Map extends Mapper<LongWritable,Text,IntWritable,Text>{
private Text word = new Text();
public void map(LongWritable key, Text value, Context context) throws IO Exception, Interrupted Exception{
String line = value.toString();
StringTokenizer tokenizer = new StringTokenizer(line);
word.set(tokenizer.nextToken());
IntWritable number = new IntWritable(Integer.parseInt(tokenizer.nextToken()));
context.write(number,word);
}
}
2条答案
按热度按时间vyswwuz21#
根据文档,减速机输出不会重新排序。通过为jobconf.setoutputvaluegroupingcomparator(类)设置适当的值,对reducer的输入进行排序(如果这对应用程序有效),或者只在单独的步骤中对reducer的最终输出进行排序。
ruoxqz4g2#
最好的方法是使用第一个mapreduce作业的输出作为另一个作业的输入,我称之为sort.java。由于hadoop map函数有一个排序算法,您甚至不需要reduce类。就这样做吧:
这将根据longwritable值对第一个mapreduce的[longwritable,text]输出进行排序。让我知道它是怎么工作的!
氯