30분
실행 계획 읽기: explain() 마스터
Day 3: 같은 코드가 10배 빨라지는 비밀
실행 계획 읽기: explain() 마스터
Apache Spark: 대용량 데이터 처리의 시작 > Day 3: 같은 코드가 10배 빨라지는 비밀
학습 목표
explain()으로 실행 계획을 확인할 수 있다 실행 계획에서 최적화 여부를 판단할 수 있다
explain() 사용법
에디터 로딩 중...
실행 계획 해석 키워드
| 키워드 | 의미 |
|---|---|
FileScan parquet [col1, col2] | 해당 컬럼만 읽음 (Column Pruning) |
PushedFilters: [col > 100] | 파일 레벨에서 필터 (Predicate Pushdown) |
BroadcastHashJoin | Broadcast Join 사용 |
SortMergeJoin | Sort-Merge Join 사용 |
Exchange | Shuffle 발생 |
WholeStageCodegen | 최적화된 코드 생성 |
Exchange (Shuffle) - 성능의 적
에디터 로딩 중...
이게 보이면 Shuffle이 발생하고 있다!
Shuffle = 데이터를 네트워크로 재분배 → 느리고 비용이 크다
Shuffle이 발생하는 연산:
- groupBy
- join (broadcast 아닌 경우)
- repartition
- distinct
- orderBy (전체 정렬)
에디터 로딩 중...
힌트 보기
- • explain(True)로 전체 계획 확인
- • FileScan에서 읽는 컬럼 확인
- • Exchange가 Shuffle을 의미
- • BroadcastHashJoin이 가장 빠름
정답 보기
에디터 로딩 중...