Apache Spark — 느린 잡의 답은 실행 계획과 이벤트 로그에 있다 · 캐시와 재계산 · 测验
퀴즈: 캐시와 재계산
6道题. 完成作答后会显示正确答案和解析。
캐시 없이 같은 DataFrame 으로 count() 를 부르고 이어서 파일로 썼다. 원본 CSV 는 몇 번 읽히는가?
- 한 번 — 두 번째 행동은 첫 행동의 결과를 자동으로 재사용한다
- 한 번 — count() 는 원본을 읽지 않고 메타데이터만 본다
- 두 번 — 행동마다 계보를 따라 원본부터 다시 계산한다
- 세 번 — 스키마 확인용 잡이 행동마다 하나씩 더 붙는다
PySpark 에서 DataFrame.cache() 가 쓰는 기본 저장 수준은?
- MEMORY_ONLY
- MEMORY_AND_DISK_DESER
- DISK_ONLY
- OFF_HEAP
df.cache() 를 부른 직후, 아직 행동은 부르지 않았다. 이 상태를 바르게 말한 것은?
- 캐시할 표시만 있고 아직 아무 파티션도 저장되지 않았다
- 드라이버가 모든 파티션을 곧바로 계산해 메모리에 올렸다
- 원본 파일이 실행기의 로컬 디스크로 복사되기 시작했다
- Storage 탭에 크기가 0 인 캐시 항목이 이미 나타난다
튜닝 가이드가 설명하는 통합 메모리에서 spark.memory.fraction(기본 0.6)은 무엇에 대한 비율인가?
- 실행기에 할당된 전체 컨테이너 메모리에 대한 비율
- JVM 힙 전체에 대한 비율로, 나머지 40% 는 캐시 전용
- 운영체제의 남는 메모리에 대한 비율로, 매번 다시 계산됨
- JVM 힙에서 300MiB 를 뺀 나머지에 대한 비율
반복 알고리즘에서 같은 DataFrame 에 변환을 수십 번 덧대 계획이 비대해졌다. 캐시 대신 체크포인트를 쓰는 이유로 맞는 것은?
- 체크포인트는 결과를 메모리에만 두어 캐시보다 빠르기 때문이다
- 체크포인트는 결과를 파일로 쓰고 논리 계획을 잘라 내기 때문이다
- 체크포인트는 게을러서 행동이 불릴 때까지 아무 비용이 없기 때문이다
- 캐시는 반복 알고리즘에서 틀린 답을 낼 수 있기 때문이다
SQL 의 CACHE TABLE 과 DataFrame 의 cache() 의 차이로 맞는 것은?
- 둘 다 게으르고, 첫 조회 때 저장한다
- CACHE TABLE 은 디스크에만 저장하고 cache() 는 메모리에만 둔다
- CACHE TABLE 은 기본이 즉시이고, LAZY 를 붙여야 게을러진다
- CACHE TABLE 은 세션 하나에서만 보이고 cache() 는 모든 세션이 공유한다