Hadoop中TopN问题:
自定义分区:继承Partitioner 泛型的类型与map阶段的输出类型一致
return(bean.getName().hashCode()&Integer.MAX_VALUE)%numPartitions;
如果不设置此项,map阶段的key值为对象,Name相同的对象的hashcode值不相同,Name相同的对象就会在不同分区,就可能运行多个ReduceTask,导致最终的结果不正确
Bean 实现WritableComparable接口重写方法 读的顺序和写的顺序要保持一致
重写CompareTo方法自定义排序规则
分组:继承WritableComparator
//实例化对象
public MyGroup(){
super(Bean.class,true);
}
重写compare方法
return bean1.getName().compareTo(bean2.getName());