Hadoop的序列化,
1、对象的序列化:将对象编码成一个字节流,以及从字节流中重新构建对象。
2、java内建的序列化机制
在Java中,只需要在类声明中加入 implements Serializable即可。具体操作如在对象流ObjectOutputStream对象上调用writeObject()等。Java序列化参见《Java Object Serialization Specification》中的规范。
缺点是序列化输出中保存了大量的附加信息,导致序列化结果膨胀。
3、Hadoop序列化机制
其需要具有紧凑、快速、可扩展、互操作等特征。
3.1 Hadoop Writable机制
public interface Writable{
void write(DataOutput out) throws IOException;
void readFields(DataInput in) throws IOException;
}
使用例如,out.writeLong(Id) , id = in.readLong()
Hadoop序列化机制中还包括了另外几个重要的接口:WritableComparable、RawComparator和WritableComparator;
WritableComparable:ByteComparable、IntWritable、DoubleWritable
RawComparator:它是一个泛型类,允许执行者比较流中读取的未被反序列化为对象的记录,从而省去了创建对象的所有开销,接口包含
public int compare(byte[] b1 , int s1 , int l1 , byte[] b2 , int s2 , int l2)方法。
WritableComparator:它是RawComparator对WritableComparable类的一个通用实现,它提供了一个RawComparator的compare()方法
的默认实现;充当了RawComparator实例的一个工厂方法。