天天看點

序列化和反序列化的詳解

序列化: 就是把記憶體中的對象,轉換成位元組序列(或其他資料傳輸協定)以便于存儲(持久化)和網絡傳輸;

反序列化: 就是将收到位元組序列(或其他資料傳輸協定)或者是硬碟的持久化資料,轉換成記憶體中的對象。

像資料庫驅動類,就不能序列化,因為序列化後,localhost找不到位址,不能進行反序列化。

1、java 序列化

是一個重量級序列化架構(serializable),它會把這個對象的方方面面的資訊都序列化出去,産生的二進制序列體積臃腫龐大,但是資訊很全。

  

2、hadoop序列化

hadoop 自己開發了一套序列化機制(writable),精簡、高效,需要實作write方法 和 readfields方法。

3、spark序列化

spark中将對象序列化,預設調用jdk的objectoutputstream(serializable),是以,我們在spark代碼中,一般都要修改序列化器,可以用kryo序列化架構,kryo序列化架構的序列化結果要比jdk的序列化結果更精簡(少了一些類的元資訊)。

  更多java、大資料學習面試資料,請掃碼關注我的公衆号:

序列化和反序列化的詳解

專注于大資料和java開發,學習交流可以關注我的公衆号:javaydsj