hadoop的序列化机制

序列化(Serialization)是指把结构化对象转化为字节流

  • 反序列化(Deserialization)是序列化的逆过程。即把字节流转回结构化对象。
  • hadoop将Java中的序列化接口(java.io.Serializable)进行了改造,已达到高效传输的目的

序列化格式特点


1. 紧凑:高效使用存储空间。
2. 快速:读写数据的额外开销小
3. 可扩展:可透明地读取老格式的数据
4. 互操作:支持多语言的交互
(Hadoop的序列化格式:Writable
例:long对应LongWritable)

这里写图片描述
序列化在分布式环境的两大作用:

  • 进程间通信,永久存储。
  • Hadoop节点间通信。

自定义Writable类型

  有时候,使用hadoop自带的一些writable序列化类(如LongWritable、Text)无法满足要求,需要自定义一些序列化类型。
  首先,定义一个类例如DataBean实现Writable接口,并实现其接口的 write() 和 readFilelds() 方法
  注意:一定不能把顺序和数据类型写错了,不然无法保证正常序列化!

public class DataBean implements Writable{ 

    private String telNo;
    private long uoPayLoad;
    private long downPayLoad;
    private long totalPayLoad;
    //序列化
    public void write(DaraOutput out) throws IOException {
        out.writeUTF(telNo);
        out.writeLong(upPayLoad);
        out.writeLong(downPayLoad);
        out.writeLong(totalPayLoad);
    }
    //反序列化
    public void readFileds(DataInput in) throws IOException{
        this.telNo = in.readUTF();
        this.upPayLoad = in.readLong();
        this.downPayLoad= in.readLong();
        this.totalPayLoad= in.readLong();
    }
    getter and setters...
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值