MapReduce----辅助排序(二次排序)

MapReduce默认按key排序,但不保证value排序。在某些需求下,如统计每年最高气温,需要对value进行排序。这通常通过自定义组合key(comkey)实现。示例中,源文件是sequenceFile,包含<IntWritable, IntWritable>,通过自定义comkey方法,可以实现对value的排序和分组。" 112011351,10534811,Qt 按钮弹出菜单向右显示,"['Qt开发', 'GUI设计', '用户交互', '菜单操作', 'C++']
摘要由CSDN通过智能技术生成

MapReduce框架在记录到达reduce之前按key进行记录排序,但是建所对应的值并没有排序。甚至在不同的执行轮次中,这些值的排序也是不固定的,应为它们

来自不同的map任务且不同的map任务在不同的轮次中完成的时间也是不同的,一般来说,大多数MapReduce程序会避免reduce函数依赖于值进行排序,需要

通过特定的方法对键进行排序和分组实现对值得排序。

下面以统计每年的最高气温为例进行示例:

注意:源文件是一个sequenceFile序列文件<IntWritable, IntWritable>

1、自定义组合comkey

package hadoop.mr.sort.secondary;

import org.apache.hadoop.io.WritableComparable;

import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;

/**
 * 组合key
 */
public class CombKey implements WritableComparable<CombKey>{
	public int year ;
	public int temp ;

	public int compareTo(CombKey o) {
		int oyear = o.year ;
		int otemp = o.temp ;
		//同一年份
		if(year == oyear){
			ret
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值