在分片进入reduce之前可以通过groupingcomparator自定义为相同的一组key
常用在使具有相同的id号的bean看做相同的key,即一个bean是一个对象,默认情况下reduce认为一个bean就是一组
首先需要定义一个类来extendswritablecomparator,最后在main方法中
job.setgroupingcomparator()
package com.lq.bd; import org.apache.hadoop.io.WritableComparable; import org.apache.hadoop.io.WritableComparator; //利用reduce端的groupingcomparat来将一组bean看成相同的key //通过继承writableComparator来实现 public class groupingcomparat extends WritableComparator { //不能少构造方法 public groupingcomparat() { //注册传入reduce端的bean super(OrderBean.class,true); } @Override public int compare(WritableComparable a, WritableComparable b) { OrderBean abean= (OrderBean) a; //强转 OrderBean bbean= (OrderBean) b; return abean.getItemid().compareTo(bbean.getItemid());//比较id是否相同,若相同则视作一组 } }