25분
Catalyst Optimizer: 4단계 최적화
Day 3: 같은 코드가 10배 빨라지는 비밀
Catalyst Optimizer: 4단계 최적화
Apache Spark: 대용량 데이터 처리의 시작 > Day 3: 같은 코드가 10배 빨라지는 비밀
학습 목표
Catalyst Optimizer의 4단계를 이해한다 각 단계에서 일어나는 최적화를 파악한다
Catalyst 최적화 파이프라인
에디터 로딩 중...
3단계: Logical Optimization (가장 중요!)
1) Predicate Pushdown (조건 먼저 적용)
Before:
에디터 로딩 중...
After:
에디터 로딩 중...
필터를 먼저 하면 데이터가 확 줄어든다!
에디터 로딩 중...
2) Column Pruning (컬럼 가지치기)
Before:
에디터 로딩 중...
After:
에디터 로딩 중...
Parquet은 컬럼 단위로 읽을 수 있어서 가능한 최적화.
3) Constant Folding (상수 미리 계산)
Before:
에디터 로딩 중...
After:
에디터 로딩 중...
4) Join Reordering (조인 순서 최적화)
에디터 로딩 중...
Catalyst가 자동으로:
- 작은 테이블을 먼저 broadcast
- 큰 테이블은 나중에 처리
- 최적의 조인 순서 결정
4단계: Physical Planning
논리적 계획을 실제 실행 방법으로 변환.
Join 전략 선택:
| 전략 | 조건 | 속도 |
|---|---|---|
| BroadcastHashJoin | 한쪽이 작음 | 가장 빠름 |
| SortMergeJoin | 양쪽 다 큼 | 보통 |
| ShuffleHashJoin | 특수 상황 | 보통 |
Spark가 데이터 크기를 보고 자동 선택.