← 학습 카테고리

Learn

Spark

84개 모듈 · 현재 63번째

Spark 모듈 63/84 spark-learn-63

DataFrame.explain() 다섯 가지 모드 — 무엇을 보고 싶은지에 따라 달라지는 출력

Spark DataFrame.explain() 모드 및 Delta Lake Change Data Feed 공식 문서 종합 (웹 리서치, 2026) — PySpark 공식 문서(DataFrame.explain) + Delta Lake 공식 문서(delta-change-data-feed) PySpark 공식 문서 DataFrame.explain

이 모듈을 다 읽으면

  • explain()의 기본 모드가 물리 계획만 보여준다는 것과 다른 모드의 차이를 설명할 수 있다
  • codegen/cost/formatted 모드를 각각 언제 쓰는 게 적합한지 판단할 수 있다

spark-learn-04에서 다룬 explain()의 기본 사용(물리 계획을 위에서 아래로 읽는 것)을 전제로, mode 파라미터로 선택할 수 있는 나머지 네 가지 모드가 각각 다른 관점에서 실행 계획을 보여준다는 것을 정리한다.

simple(기본값)과 extended — '물리 계획만' vs '4단계 계획 전부'

인자 없이 explain()을 호출하면 기본값인 simple 모드가 적용돼 물리 계획(physical plan)만 보여준다 — spark-learn-04에서 다룬 예제들이 전부 이 기본 모드다. extended 모드는 여기서 한 걸음 더 나아가, 파싱된 논리 계획(parsed) → 분석된 논리 계획(analyzed) → 최적화된 논리 계획(optimized) → 물리 계획까지 4단계를 전부 보여준다 — 옵티마이저가 각 단계에서 쿼리를 어떻게 변형해가는지 전 과정을 추적하고 싶을 때 쓴다.

핵심 포인트

  • simple(기본값): 물리 계획만 표시 — spark-learn-04의 기존 explain() 예제들이 전부 이 모드
  • extended: 파싱→분석→최적화된 논리 계획 + 물리 계획까지 4단계 전부 표시 — 옵티마이저의 전체 변형 과정 추적용

codegen과 cost — 생성된 코드와 비용 통계를 각각 들여다본다

codegen 모드는 Whole-Stage Code Generation이 실제로 만들어낸 Java 코드 자체를 보여줘, 코드 생성 결과를 직접 검토하며 성능 병목을 파악하고 싶을 때 쓴다. cost 모드는 물리 계획에 비용 통계(옵티마이저가 각 연산에 대해 추정한 비용)를 함께 보여줘, 비용 기반 최적화가 어떤 근거로 특정 계획을 선택했는지 이해하는 데 쓰인다.

핵심 포인트

  • codegen: Whole-Stage Code Generation이 실제로 만든 Java 코드를 표시 — 코드 생성 결과 자체를 검토할 때 사용
  • cost: 물리 계획에 비용 통계를 함께 표시 — 비용 기반 최적화의 선택 근거를 이해할 때 사용

formatted — 트리+노드 상세 정보를 나눠서 읽기 좋게

formatted 모드는 비교적 최근에 추가된 방식으로, 실행 계획을 트리 구조와 각 노드의 상세 정보를 분리해 더 읽기 쉬운 계층적 레이아웃으로 보여준다 — 복잡한 쿼리 계획을 사람이 눈으로 훑어보기에 simple/extended의 평면적 텍스트보다 수월하다는 게 장점이다.

핵심 포인트

  • formatted: 트리 구조와 노드별 상세 정보를 분리해 계층적으로 표시 — 복잡한 계획을 사람이 읽기에 더 수월한 최신 레이아웃