hadoop8-序列化

序列化

1)序列化和反序列化的概念

序列化是将结构化对象转换成为字节流以便于进行网络传输或写入持久存储的过错

反序列化是将字节流转换成为一系列结构化对象的过程

序列化的用途

1)作为一种数据持久化格式

2)作为一种通信的数据格式

3)作为一种数据拷贝或者克隆机制

序列化的特征:紧凑/快速/可扩展/互操作

java的序列化和反序列化

1)创建一个对象实现Serializable

2)序列化:ObjectOutStream.writeObject(序列化对象)

反序列化:ObjectInputStream.readObject()返回序列化对象

import java.io.Serializable;

class TestSerial implements Serializable{

            public byte version = 100;

            public byte count = 0;

}

FileInputStream fis = new FileInputStream("temp.out");

ObjectInputStream oin = new ObjectInputStream(fis);

TestSerial ts = (TestSerial) oin.readObject();


FileOutputStream fis = new FileOutputStream("temp.out");

ObjectOutputStream oos = new ObjectOutputStream(fis);

TestSerial ts =  new TestSerial();

oos.writeObject(ts);


hadoop序列化

hadoop的序列化没有采用java的序列化,而是实现了自己的序列化方式,因为java序列化比较繁琐,生成的文件多


hadoop通过Writable接口实现的序列化机制,不过没有提供比较功能,所以和java中的Comparable接口合并,提供一个

接口WiritableComparable


Writable接口提供两个方法,write和readFiles

public interface Writable{

     void write(DataOutput out) throws IOException;

     void readFiles(DataInput in) throws IOException;

}


public interface WritableComparable<T> extends Writable,Comparable<T>
{

}


Hadoop

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值