我對Hadoop數據流中的序列化有點困惑。假設我有一個Java對象定義如下(該對象可以是更復雜的比我示出):關於Hadoop中的序列化:序列化的優點是什麼?
public void MyObject {
private int Field1;
private String Field2;
public void method1() {
}
...
}
爲了傳輸映射器和減速器之間此對象的情況下,有兩種方法:
第一種方法 - 我可以在映射器中逐個序列化int字段和String字段,並將它們寫入輸出,然後在reducer中,我讀取它們並使用這些值創建一個MyObject
的新實例。假設新創建的實例與原始實例相比沒有差別。
第二種方法 - 我可以重寫MyObject
來實現Writable
接口,並在映射器中序列化整個實例。然後在reducer中,我只需要反序列化對象,我就可以使用它。
這兩種方法有什麼區別?在傳輸對象之前序列化對象有什麼優點。
這看起來與您的其他問題相同http://stackoverflow.com/questions/16836607/what-are-the-connections-and-differences-between-hadoop-writable-and-java- io-ser/16838260#16838260 – Tariq
@Tariq我先問這個,然後我問了一個更具體的問題。但實際上它們是不同的。 – Denzel
我沒有注意到時間。請不要介意。而且我說過它'看起來一樣'而不是'相同'。 – Tariq