캐시와 지속의 차이점은 무엇입니까?
RDD
지속성 측면 에서 스파크 cache()
와 차이점은 무엇 persist()
입니까?
와 함께 cache()
, 당신은 단지 기본 스토리지 레벨을 사용합니다 MEMORY_ONLY
. 을 사용하여 persist()
원하는 스토리지 레벨을 지정할 수 있습니다 ( rdd-persistence ).
공식 문서에서 :
- 에 () 또는 () 메소드를
RDD
사용하여 지속되도록 표시 할 수 있습니다 .persist
cache
- 지속되는 각각
RDD
은 다른을 사용하여 저장할 수 있습니다storage level
cache
() 메소드는 기본 저장 레벨을 사용하는 속기StorageLevel.MEMORY_ONLY
(저장 메모리에서 객체를 탈 직렬화).
사용 persist()
이 아닌 다른 저장 수준을 할당 할 경우 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를 유지해야합니까? )
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
Caching can improve the performance of your application to a great extent.
There is no difference. From RDD.scala
.
/** Persist this RDD with the default storage level (`MEMORY_ONLY`). */
def persist(): this.type = persist(StorageLevel.MEMORY_ONLY)
/** Persist this RDD with the default storage level (`MEMORY_ONLY`). */
def cache(): this.type = persist()
Spark gives 5 types of Storage level
MEMORY_ONLY
MEMORY_ONLY_SER
MEMORY_AND_DISK
MEMORY_AND_DISK_SER
DISK_ONLY
cache()
will use MEMORY_ONLY
. If you want to use something else, use persist(StorageLevel.<*type*>)
.
By default persist()
will store the data in the JVM heap as unserialized objects.
Cache() and persist() both the methods are used to improve performance of spark computation. These methods help to save intermediate results so they can be reused in subsequent stages.
The only difference between cache() and persist() is ,using Cache technique we can save intermediate results in memory only when needed while in Persist() we can save the intermediate results in 5 storage levels(MEMORY_ONLY, MEMORY_AND_DISK, MEMORY_ONLY_SER, MEMORY_AND_DISK_SER, DISK_ONLY).
참고 URL : https://stackoverflow.com/questions/26870537/what-is-the-difference-between-cache-and-persist
'Programing' 카테고리의 다른 글
인수없이 스크립트를 호출하면 Python Argparse와 함께 도움말 메시지 표시 (0) | 2020.05.10 |
---|---|
파일 또는 어셈블리 'System.Web.Mvc'를로드 할 수 없습니다 (0) | 2020.05.10 |
소켓 대 종료? (0) | 2020.05.10 |
텍스트 인코딩을 결정하는 방법은 무엇입니까? (0) | 2020.05.09 |
SQL에서 count (column)과 count (*)의 차이점은 무엇입니까? (0) | 2020.05.09 |