캐싱

PySpark로 데이터 정제하기

Mike Metzger

Data Engineering Consultant

캐싱이란?

Spark의 _캐싱_:

  • DataFrame을 메모리 또는 디스크에 저장합니다
  • 이후 변환/액션 속도를 높입니다
  • 리소스 사용을 줄입니다
PySpark로 데이터 정제하기

캐싱의 단점

  • 매우 큰 데이터셋은 메모리에 못 담을 수 있습니다
  • 로컬 디스크 기반 캐싱은 성능이 안 좋아질 수 있습니다
  • 캐시된 객체가 없을 수 있습니다
PySpark로 데이터 정제하기

캐싱 팁

Spark 작업 개발 시:

  • 필요할 때만 캐시하십시오
  • 여러 지점에서 DataFrame 캐시를 시도하고 성능 향상을 확인하십시오
  • 메모리와 빠른 SSD/NVMe에 캐시하십시오
  • 필요 시 느린 로컬 디스크에도 캐시하십시오
  • 중간 파일을 사용하십시오!
  • 끝나면 캐시를 해제하십시오
PySpark로 데이터 정제하기

캐싱 구현

액션 전에 DataFrame에 .cache()를 호출하십시오

voter_df = spark.read.csv('voter_data.txt.gz')
voter_df.cache().count()
voter_df = voter_df.withColumn('ID', monotonically_increasing_id())
voter_df = voter_df.cache()
voter_df.show()
PySpark로 데이터 정제하기

추가 캐시 작업

.is_cached로 캐시 상태를 확인하십시오

print(voter_df.is_cached)
True

DataFrame 사용을 마치면 .unpersist()를 호출하십시오

voter_df.unpersist()
PySpark로 데이터 정제하기

연습해 봅시다!

PySpark로 데이터 정제하기

Preparing Video For Download...