1. 程式人生 > >Spark RDD或Dataframe持久化的選擇

Spark RDD或Dataframe持久化的選擇

背景

測試資料(df,dataframe格式):800萬條, 4.5G。 計算配置:每個executor的memory為20G,32個核。 測試語句:count條數—df.groupby("_90").count().show()

持久化操作

持久化操作 特點 程式碼 計算時間
df.count() 17秒
只到記憶體 以分割槽的形式存到叢集的各機器記憶體中上 df.persist(StorageLevel.MEMORY_ONLY) 2.6秒
只到硬碟 存到叢集的各機器硬碟中上 df.persist(StorageLevel.DISK_ONLY) 2.8秒
硬碟和記憶體 記憶體不夠用的時候放硬碟 df.persist(StorageLevel.MEMORY_AND_DISK) 2.6秒
只到記憶體(序列化) 節省記憶體,但是處理變慢 df.persist(StorageLevel.MEMORY_ONLY_SER) 4.9秒
只到記憶體(2各備份) 以防其中一個節點死掉,更穩定 df.persist(StorageLevel.MEMORY_ONLY_2) 2.8秒

Stack Overflow上有關於效能的比較,如下在這裡插入圖片描述