1.需求描述
针对简单数据的排序需求并不复杂,大数据量文本中每行只存在一个数值,要求按照数值大小输出,且为数值标记行数。本案例对理解MR的原理深有帮助。
输入
12
58
1283
45
9
...
输出
1 9
2 12
3 45
4 58
5 1283
...
2.实现思路
MapReduce的Reduce阶段会按照key-velue对中的key进行排序,如果key为封装int的IntWritable类型,那么MapReduce按照数字大小对key排序,如果key为封装为String的Text类型,那么MapReduce按照字典顺序对字符串排序。
3.代码实现
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import java.io.IOEx