WritableComparable排序

 

 

  1. 因为map、reduce 之间传递的参数是通过本地持久化来实现,所以需要实现序列化接口。但由于Java的 Serializable接口是一个重量级的API,所以Hadoop自定义一套新的API。
  2. 如果传递的参数是基本类型和字符串,可以直接使用Text,LongWritable,IntWritable 。但如果是自定义的 Java Bean,就需要自己实现Writable接口。
  3. Writable接口有两个方法需要实现:
  •      write(DataOutput var1) 会在序列化的时候被调用
  •      readFields(DataInput var1) 方法会在反序列化的时候被调用

    4. 默认情况下,从map端到reduce端的键值对传输会按照key进行排序。假设map端输出的key是Text,无需实现其compareTo方法,因为系统默认已经实现了。

 

自定义排序WritableComparable

原理分析

bean对象做为key传输,需要实现WritableComparable接口重写compareTo方法,就可以实现排序。

@Override
public int compareTo(FlowBean o) {
 
int result;
// 按照总流量大小,倒序排列
if (sumFlow > bean.getSumFlow()) {
result = -1;
}else if (sumFlow < bean.getSumFlow()) {
result = 1;
}else {
result = 0;
}
 
return result;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值