scala> import org.apache.spark.storage.StorageLevel
import org.apache.spark.storage.StorageLevel
scala> val rdd = sc.makeRDD(1 to 10000, 10)
rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[0] at makeRDD at <console>:24
scala> rdd.setName("presistedRDD")
res0: rdd.type = presistedRDD ParallelCollectionRDD[0] at makeRDD at <console>:24
scala> rdd.persist(StorageLevel.DISK_ONLY)
res1: rdd.type = presistedRDD ParallelCollectionRDD[0] at makeRDD at <console>:24
scala> rdd.getStorageLevel
res2: org.apache.spark.storage.StorageLevel = StorageLevel(disk, 1 replicas)
편의성을 위해 setName 추가
persist를 통해 disk로 cache
아직까지 action을 실행하지 않은 상태 -> Spark shell web UI: http://spark-master-01:4040/ 의 storage에서는 아무것도 없음
scala> rdd.count
res3: Long = 10000
action 실행 후 Spark shell web UI 의 storage에서 cache를 확인 가능하고
/spark3/conf/spark-env.sh의
나의 경우에는
SPARK_LOCAL_DIRS=/skybluelee/spark3/local
/skybluelee/spark3/local/.../blockmgr...
위치에 storage와 동일한 값이 있는 것을 확인할 수 있다.
scala> rdd.unpersist()
res4: rdd.type = presistedRDD ParallelCollectionRDD[0] at makeRDD at <console>:24
unpersist 후에는 Spark shell web UI 의 storage에서 cache가 없어졌고
/skybluelee/spark3/local/.../blockmgr...
에 directory는 남아있지만 파일은 없어졌다
scala를 중지하면 directory(~/local/*)도 전부 사라진다