天天看點

Java的序列化Serilazable與hadoop序列化機制Writable

Java的序列化Serilazable

Java的序列化是一個重量級序列化架構(Serializable),一個對象被序列化後,會附帶很多額外的資訊(各種校驗資訊,header,繼承體系等),不便于在網絡中高效傳輸。

hadoop序列化機制Writable

1.緊湊

緊湊的格式能讓我們充分利用網絡帶寬,而帶寬是資料中心最稀缺的資源

2.快速

程序通信形成了分布式系統的骨架,是以需要盡量減少序列化和反序列化的性能開銷,這是基本的;

3.可擴充

協定為了滿足新的需求變化,是以控制用戶端和伺服器過程中,需要直接引進相應的協定,這些是新協定,原序列化方式能支援新的協定封包;

4.互操作

能支援不同語言寫的用戶端和服務端進行互動;

自定義bean對象實作序列化接口(Writable)

自定義bean對象要想序列化傳輸,必須實作序列化接口

(1)必須實作Writable接口

(2)反序列化時,需要反射調用空參構造函數,是以必須有空參構造

public FlowBean() {
	super();
}
           

(3)重寫序列化方法

@Override
	public void write(DataOutput out) throws IOException {
		out.writeLong(upFlow);
		out.writeLong(downFlow);
		out.writeLong(sumFlow);
	}
           

(4)重寫反序列化方法

@Override
public void readFields(DataInput in) throws IOException {
	upFlow = in.readLong();
	downFlow = in.readLong();
	sumFlow = in.readLong();
}
           

(5)注意反序列化的順序和序列化的順序完全一緻

繼續閱讀