一.cache
將數(shù)據(jù)持久化到內(nèi)存中去
注意:
1.cache是一個(gè)懶執(zhí)行算子,必須有一個(gè)action類算子觸發(fā)執(zhí)行哆键。
2.cache類算子的返回值必須復(fù)制給一個(gè)變量,在接下來的job中,直接使用這個(gè)變量就能讀取到內(nèi)存中緩存的數(shù)據(jù)塞赂。
3.cache類算子不能立即緊跟action類算子。緊跟action類算子之后昼蛀,這個(gè)算子就不是RDD類型的變量宴猾,之后的RDD就拿不到這個(gè)變量了。
這樣就是錯(cuò)的
4.如果想釋放掉緩存在內(nèi)存中的數(shù)據(jù)叼旋,使用unpersisit算子仇哆,這個(gè)算子是Action類算子。
二.persist 算子
cache算子實(shí)際上就是persist算子的簡化版
persist(StorageLevel.MEMORY_ONLY)=cache()
persist方法其他持久化級(jí)別
一種有16種常用的有
MEMORY_ONLY 和cache一樣
MEMORY_AND_DISK_SER 會(huì)將RDD計(jì)算到數(shù)據(jù)序列化送淆,內(nèi)存放不了再放到磁盤
MEMORY_AND_DISK RDD先放到內(nèi)存中税产,內(nèi)存放不了再放到磁盤
持久化的單位是partition:每一個(gè)partition處理的數(shù)據(jù)不會(huì)一般存儲(chǔ)到內(nèi)存中一半存儲(chǔ)在磁盤中