답변:
와 함께 cache()
, 당신은 단지 기본 저장 수준을 사용 :
MEMORY_ONLY
대한 RDDMEMORY_AND_DISK
에 대한 데이터 집합을 사용하면 RDD 및 데이터 세트persist()
모두에 대해 원하는 스토리지 레벨을 지정할 수 있습니다 .
공식 문서에서 :
- 에 () 또는 () 메소드를
RDD
사용하여 지속되도록 표시 할 수 있습니다 .persist
cache
- 지속되는 각각
RDD
은 다른을 사용하여 저장할 수 있습니다storage level
cache
() 메소드는 기본 저장 레벨을 사용하는 속기StorageLevel.MEMORY_ONLY
(저장 메모리에서 객체를 탈 직렬화).
다음 persist()
이외의 스토리지 레벨을 지정하려는 경우 사용하십시오 .
MEMORY_ONLY
받는 RDDMEMORY_AND_DISK
에 대한 데이터 집합공식 문서에 대한 흥미로운 링크 : 선택할 스토리지 레벨
MEMORY_AND_DISK
는 데이터 세트의 기본값입니다. MEMORY_ONLY
RDD의 기본값입니다.
cache
와persist
운영 의 차이점 은 순전히 구문입니다. 캐시가 지속되거나 (지속의 동의어이다MEMORY_ONLY
), 즉cache
단지입니다persist
기본 저장 용량 수준으로MEMORY_ONLY
/ ** *이 RDD를 기본 저장소 수준 (
MEMORY_ONLY
)으로 유지합니다. * /
def persist () : this.type = persist (StorageLevel.MEMORY_ONLY)/ ** *이 RDD를 기본 저장소 수준 (
MEMORY_ONLY
)으로 유지합니다. * /
def cache () : this.type = persist ()
자세한 내용은 여기를 참조하십시오 ...
캐싱 또는 지속성은 (반복 및 대화식) Spark 계산을위한 최적화 기술입니다. 중간 부분 결과를 저장하여 이후 단계에서 재사용 할 수 있습니다. 따라서 이러한 중간 결과 RDD
는 메모리 (기본값) 또는 디스크와 같은 더 견고한 저장소 및 / 또는 복제에 유지됩니다.
작업을 RDD
사용하여 캐시 할 수 있습니다 cache
. persist
작업을 사용하여 지속될 수도 있습니다 .
persist
,cache
이 기능을 사용하여의 저장 레벨을 조정할 수 있습니다
RDD
. 메모리를 확보 할 때 Spark는 스토리지 수준 식별자를 사용하여 유지할 파티션을 결정합니다. 매개 변수 less variantpersist
() 및cache
()는 다음에 대한 약어입니다.persist(StorageLevel.MEMORY_ONLY).
경고 : 저장 레벨이 변경되면 다시 변경할 수 없습니다!
RDD
메모리에 캐시 할 수 있다고 해서 맹목적으로 그렇게해야한다는 의미는 아닙니다. 데이터 세트에 몇 번 액세스했는지와 그렇게하는 데 소요되는 작업량에 따라 메모리 압력 증가로 인해 지불 한 가격보다 재 계산 속도가 빨라질 수 있습니다.
캐싱 할 시점이 없으면 데이터 집합을 읽은 경우 실제로 작업 속도가 느려질 것입니다. 캐시 된 데이터 세트의 크기는 Spark Shell에서 확인할 수 있습니다.
변형 나열 ...
def cache(): RDD[T]
def persist(): RDD[T]
def persist(newLevel: StorageLevel): RDD[T]
* 아래 예 참조 : *
val c = sc.parallelize(List("Gnu", "Cat", "Rat", "Dog", "Gnu", "Rat"), 2)
c.getStorageLevel
res0: org.apache.spark.storage.StorageLevel = StorageLevel(false, false, false, false, 1)
c.cache
c.getStorageLevel
res2: org.apache.spark.storage.StorageLevel = StorageLevel(false, true, false, true, 1)
참고 : 캐싱과 지속성의 매우 작고 순전히 구문상의 차이로 인해 RDD
때문에 두 용어는 종종 서로 바꿔서 사용됩니다.
더 시각적으로 여기를 참조하십시오 ....
메모리와 디스크에 지속
캐싱은 응용 프로그램의 성능을 크게 향상시킬 수 있습니다.
cache()
현재 사용 MEMORY_AND_DISK