30

실행 계획 읽기: explain() 마스터

Day 3: 같은 코드가 10배 빨라지는 비밀

학습 목표

explain()으로 실행 계획을 확인할 수 있다 실행 계획에서 최적화 여부를 판단할 수 있다

explain() 사용법

에디터 로딩 중...

실행 계획 해석 키워드

키워드의미
FileScan parquet [col1, col2]해당 컬럼만 읽음 (Column Pruning)
PushedFilters: [col > 100]파일 레벨에서 필터 (Predicate Pushdown)
BroadcastHashJoinBroadcast Join 사용
SortMergeJoinSort-Merge Join 사용
ExchangeShuffle 발생
WholeStageCodegen최적화된 코드 생성

Exchange (Shuffle) - 성능의 적

에디터 로딩 중...

이게 보이면 Shuffle이 발생하고 있다!

Shuffle = 데이터를 네트워크로 재분배 → 느리고 비용이 크다

Shuffle이 발생하는 연산:

  • groupBy
  • join (broadcast 아닌 경우)
  • repartition
  • distinct
  • orderBy (전체 정렬)
에디터 로딩 중...
힌트 보기
  • explain(True)로 전체 계획 확인
  • FileScan에서 읽는 컬럼 확인
  • Exchange가 Shuffle을 의미
  • BroadcastHashJoin이 가장 빠름
정답 보기
에디터 로딩 중...