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實例的一個工廠方法。