3.Hadoop序列化
3.1概述
序列化和反序列化
- 序列化就是把内存中的对象,转换成字节序列,以便于储存到磁盘和网络传输
- 反序列化就是将收到的字节序列或者是磁盘的持久化数据,转换成内存中的对象
序列化特点
3.2自定义bean对象实现序列化接口
public Bean(){
}
- 重写序列化方法:
@Override
public void write(DataOutput out) throws IOException {
out.writeLong(upFlow);
out.writeLong(downFlow);
out.writeLong(sumFlow);
}
- 重写反序列化方法
@Override
public void readFields(DataInput in) throws IOException {
upFlow = in.readLong();
downFlow = in.readLong();
sumFlow = in.readLong();
}
- 序列化和反序列化的顺序完全一致
- 如果要把文件显示在文件中,需要重写toString(),可以用"\t"分隔
- 如果需要将自定义的bean放在key中传输,则还需要实现Comparable接口,因为MapReduce中的Shuffle过程要求对key必须能排序
@Override
public int compareto(FlowBean o) {
// 倒序排列,从大到小
return this.sumFlow > o.getSumFlow() ? -1 : 1;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。