25

Catalyst Optimizer: 4단계 최적화

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가 데이터 크기를 보고 자동 선택.