캐싱

Python에서 Spark SQL 입문

Mark Plutowski

Data Scientist

캐싱이란?

  • 데이터를 메모리에 유지
  • Spark는 메모리를 적극적으로 비웁니다
Python에서 Spark SQL 입문

제거 정책

  • Least Recently Used (LRU)
  • 각 워커에서 독립적으로 제거됨
  • 각 워커의 사용 가능 메모리에 따라 달라짐
Python에서 Spark SQL 입문

데이터프레임 캐싱

데이터프레임 캐시:
df.cache()
캐시 해제:
df.unpersist()
Python에서 Spark SQL 입문

데이터프레임 캐시 여부 확인

df.is_cached
False
df.cache()
df.is_cached
True
Python에서 Spark SQL 입문

데이터프레임 캐시 해제

df.unpersist()
df.is_cached()
False
Python에서 Spark SQL 입문

저장 수준

df.unpersist()
df.cache()
df.storageLevel
StorageLevel(True, True, False, True, 1)

위 저장 수준에서는 다음이 성립합니다:

  1. useDisk = True
  2. useMemory = True
  3. useOffHeap = False
  4. deserialized = True
  5. replication = 1
Python에서 Spark SQL 입문

데이터프레임 영속화

Spark 2.1+에서 다음은 동일합니다:

  • df.persist()

  • df.persist(storageLevel=pyspark.StorageLevel.MEMORY_AND_DISK)

  • df.cache()df.persist()와 같습니다

Python에서 Spark SQL 입문

테이블 캐싱

df.createOrReplaceTempView('df')
spark.catalog.isCached(tableName='df')
False
spark.catalog.cacheTable('df')
spark.catalog.isCached(tableName='df')
True
Python에서 Spark SQL 입문

테이블 캐시 해제

spark.catalog.uncacheTable('df')
spark.catalog.isCached(tableName='df')
False
spark.catalog.clearCache()
Python에서 Spark SQL 입문

  • 캐싱은 지연 수행됩니다
  • 여러 연산을 수행할 때만 캐시하십시오
  • 더 이상 필요 없으면 unpersist 하십시오
  • 선택적으로 캐시하십시오
Python에서 Spark SQL 입문

Vamos praticar!

Python에서 Spark SQL 입문

Preparing Video For Download...