RDD Persistence

이상민·2023년 3월 26일
0

spark

목록 보기
8/17
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/*)도 전부 사라진다

0개의 댓글