Spark持久化策略

spark持久化策略_緩存優化
persist、cache都是持久化到內存
緩存策略緩存

 


StorageLevel
_useDisk:是否使用磁盤
_useMemory:是否使用內存
_useOffHeap:不用堆內存,找tackyon
_deserialized:不序列化(序列化可理解爲壓縮,節省內存磁盤空間,可是消耗CPU)
_replication:副本數量 默認1份優化

默認持久化:只持久化到內存。
MEMORY_ONLY:有多少存多少,沒存進來的從新算
只存入內存,假設RDD1的數據爲1T,內存大小爲512G,那麼會將RDD中的512G放入內存,下一步操做使用RDD1的數據,生成RDD2,先去內存中找RDD1的數據,會發現存入內存的512G數據,進行計算後生成RDD2,可是RDD1中還有512G數據沒有存入內存,生成RDD2的操做會查找RDD1的依賴,若是RDD1以前的RDD有作緩存,那麼再緩存中讀取,若是沒有作緩存,再找以前的RDD,若是都沒有作緩存的話,直接去HDFS中讀取數據從新計算,最終生成RDD2。spa

MEMORY_AND_DISK:內存不夠用了就落地到本地磁盤,假設RDD1的數據爲1T,內存大小爲512G,那麼會將RDD中的512G放入內存,剩餘的512G會落地到磁盤中。生成RDD2的時候一部分從內存中讀取,一部分從磁盤中讀取。
若是計算時間較長,中間結果算起來比較昂貴,此時M_A_D比較合適blog

能存在內存中的就儘可能存在內存中,若是內存緊張,那就序列化一次M_O_SER內存

相關文章
相關標籤/搜索