Spark RDD的缓存
?
Spark速度非??斓脑蛑?#xff0c;就是在不同操作中可以在內(nèi)存中持久化或者緩存數(shù)據(jù)集。當持久化某個RDD后,每一個節(jié)點都將把計算分區(qū)結(jié)果保存在內(nèi)存中,對此RDD或衍生出的RDD進行的其他動作中重用。這使得后續(xù)的動作變得更加迅速。RDD相關(guān)的持久化和緩存,是Spark最重要的特征之一。可以說,緩存是Spark構(gòu)建迭代式算法和快速交互式查詢的關(guān)鍵。
1. RDD緩存方式
RDD通過persist方法或cache方法可以將前面的計算結(jié)果緩存,但是并不是這兩個方法被調(diào)用時立即緩存,而是觸發(fā)后面的action時,該RDD將會被緩存在計算節(jié)點的內(nèi)存中,并供后面重用。
通過查看源碼發(fā)現(xiàn)cache最終也是調(diào)用了persist方法,默認的存儲級別都是僅在內(nèi)存存儲一份,Spark的存儲級別還有好多種,存儲級別在object StorageLevel中定義的。
緩存有可能丟失,或者存儲于內(nèi)存的數(shù)據(jù)由于內(nèi)存不足而被刪除,RDD的緩存容錯機制保證了即使緩存丟失也能保證計算的正確執(zhí)行。通過基于RDD的一系列轉(zhuǎn)換,丟失的數(shù)據(jù)會被重算,由于RDD的各個Partition是相對獨立的,因此只需要計算丟失的部分即可,并不需要重算全部Partition。
總結(jié)
以上是生活随笔為你收集整理的Spark RDD的缓存的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spark 运行机制
- 下一篇: Spark DStream相关操作