spark優化 序列化持久化

2021-08-28 19:06:20 字數 565 閱讀 9644

簡介:

除了對多次使用的rdd進行持久化操作之外,還可以進一步優化其效能,因為很有可能,rdd的資料是持久化到記憶體,或者磁碟中的,那麼此時如果記憶體大小不是特別充足,完全可以使用序列化的持久化級別,

如下:1.memory_only_ser

2.memory_and_disk_ser

使用rdd.persist(storagelevel.memory_only_ser)這樣的語法即可。

好處:1.將資料序列化之後,再持久化可以大大減小對記憶體的消耗。

2.資料量小了之後,如果要寫入磁碟,那麼磁碟io效能消耗也比較小。

缺點:對rdd持久化序列化後,rdd的每個partition的資料,都是序列化為乙個巨大的位元組陣列,這樣對於記憶體的消耗就小的多了。但是唯一的缺點就是,獲取rdd資料時,需要對其進行反序列化,會增大其效能(cpu)開銷。

因此對於序列化的持久化級別,還可以進一步優化,也就是說使用kryo序列化類庫,這樣可以獲得更快的序列化速度,並且占用更小的記憶體空間。

注意:如果rdd的元素(rdd的泛型型別),是自定義型別的話,在kryo中提前註冊自定義型別。

ejb 持久化序列化物件

從客戶端 將使用者物件新增到 ejb 伺服器上 user 物件需要序列化 實現 serializable介面 public class user implements serializable public void setid int id public string getname public...

Python序列化與持久化

資料持久化可以將資料儲存到檔案中,資料庫中。儲存到檔案中可以是普通txt檔案,csv檔案等,資料庫可以是sql資料庫mongodb資料庫等 變數從記憶體中變成可儲存或傳輸的過程稱之為序列化,在python中叫pickling 變數內容從序列化的物件重新讀到記憶體裡稱之為反序列化,即unpicklin...

53 Spark效能優化之使用序列化的持久化級別

除了對多次使用的rdd進行持久化操作之外,還可以進一步優化其效能。因為很有可能,rdd的資料是持久化到記憶體,或者磁碟中的。那麼,此時,如果記憶體大小不是特別充足,完全可以使用序列化的持久化級別,比如memory only ser memory and disk ser等。使用rdd.persist...