我们知道mapper端的分组排序都是根据key的,我们通过几个实例来体现。
#首先按照第一列升序排列,当第一列相同时,第二列升序排列
#当第一列相同时,求出第二列的最小值
一、使用mapreduce默认的排序算法
使用MapReduce默认排序算法代码如下所示,在代码中我将第一列作为键,第二列作为值。
package com.yc.hadoop.mapreduce.demo02;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
public class TwoSortDemo {
public static void main(String[] args) throws Exception {
if(args.length < 2){
throw new RuntimeException("参数个数不对,至少需要两个参数");
}
Configuration conf = new Configuration();
Job job = Job.getInstance(conf,"TwoSortDemo");
job.setJarByClass(TwoSortDemo.class);
job.setInputFormatClass(MyTextInputFormat.class);
job.setMapperClass(TwoSortMapper02.class);
job.setMapOutputKeyClass(IntWritable.class);
job.setMapOutputValueClass(IntWritable.class);
//job.setReducerClass(TwoSortReduce.class); //集群合并
//输入文件操作
Path[] inPaths = new Path[args.leng