更新時(shí)間:2017-09-01 來源:黑馬程序員云計(jì)算大數(shù)據(jù)培訓(xùn)學(xué)院 瀏覽量:
三,對(duì)公用的RDD進(jìn)行持久化
持久化場景:對(duì)于一個(gè)RDD被多次引用到,并且這個(gè)RDD計(jì)算過程復(fù)雜,計(jì)算時(shí)間特別耗 時(shí),那么就可以對(duì)這個(gè)RDD進(jìn)行持久化
如何進(jìn)行持久化:調(diào)用RDD.persist(), 或者RDD.cache()
【注意】cache方法的底層就是調(diào)用persist方法
如果對(duì)RDD做持久化,默認(rèn)持久化級(jí)別是StorageLevel.MEMEORY_ONLY ,也就是持久化到內(nèi)存中去,這種持久化級(jí)別效率是最快的,但是由于是純Java對(duì)象保存到內(nèi)存中,那么內(nèi)存可能保存的數(shù)據(jù)就會(huì)較少
如果當(dāng)我們集群資源有限時(shí),那么我們可以采用MEMORY_ONLY_SER,也就是將Java對(duì)象進(jìn)行序列化之后再持久化到內(nèi)存中去,這種持久化的好處是能夠持久化更多的數(shù)據(jù)到內(nèi)存中,但是持久化時(shí)需要序列化,取出來又需要反序列化這一過程,性能相對(duì)于MEMORY_ONLY這種持久化要稍微弱點(diǎn),但是還是比較高效的
如何選擇RDD持久化策略
Spark提供的多種持久化級(jí)別,主要是在CPU和內(nèi)存之間進(jìn)行取舍,下面是一些通用的持久化級(jí)別的選擇建議:
1、有限使用MEMORY_ONLY,如果可以緩存所有數(shù)據(jù)的話,那么就使用這種策略,因?yàn)榇簝?nèi)村速度最快,而且沒有序列化,不需要消耗CPU進(jìn)行反序列化操作
2、如果MEMORY_ONLY策略,無法存儲(chǔ)所有的數(shù)據(jù)的話,那么使用MEMORY_ONLY_SER,將數(shù)據(jù)進(jìn)行序列化存儲(chǔ),純內(nèi)存操作還是非常快的,只是要消耗CPU進(jìn)行反序列化
3、如果需要進(jìn)行快速的失敗恢復(fù),那么就選擇帶后綴為_2的策略,進(jìn)行數(shù)據(jù)的備份,這樣在失敗時(shí),就不需要重新計(jì)算了
4、能不適用DISK相關(guān)的策略,就不要使用,有的時(shí)候,從磁盤讀取數(shù)據(jù)還不如重新計(jì)算一次
【AI設(shè)計(jì)】北京143期畢業(yè)僅36天,全員拿下高薪offer!黑馬AI設(shè)計(jì)連續(xù)6期100%高薪就業(yè)
2025-09-19【跨境電商運(yùn)營】深圳跨境電商運(yùn)營畢業(yè)22個(gè)工作日,就業(yè)率91%+,最高薪資達(dá)13500元
2025-09-19【AI運(yùn)維】鄭州運(yùn)維1期就業(yè)班,畢業(yè)14個(gè)工作日,班級(jí)93%同學(xué)已拿到Offer, 一線均薪資 1W+
2025-09-19【AI鴻蒙開發(fā)】上海校區(qū)AI鴻蒙開發(fā)4期5期,距離畢業(yè)21天,就業(yè)率91%,平均薪資14046元
2025-09-19【AI大模型開發(fā)-Python】畢業(yè)33個(gè)工作日,就業(yè)率已達(dá)到94.55%,班均薪資20763元
2025-09-19【AI智能應(yīng)用開發(fā)-Java】畢業(yè)當(dāng)天offer率91%,薪資1W+占比54.2%,班級(jí)均薪12k+
2025-09-19云計(jì)算大數(shù)據(jù)培訓(xùn)之Spark調(diào)優(yōu)(1)
2017-09-01云計(jì)算大數(shù)據(jù)培訓(xùn)之Hadoop組件:zookeeper(3)
2017-09-01云計(jì)算大數(shù)據(jù)培訓(xùn)之Hadoop組件:zookeeper(2)
2017-09-01云計(jì)算大數(shù)據(jù)培訓(xùn)之Hadoop組件:zookeeper(1)
2017-09-01云計(jì)算大數(shù)據(jù)培訓(xùn)之Spark-Streaming的基本原理以及預(yù)寫日志機(jī)制和checkpoint(3)
2017-09-01云計(jì)算大數(shù)據(jù)培訓(xùn)之Spark-Streaming的基本原理以及預(yù)寫日志機(jī)制和checkpoint(2)
2017-09-01