20분
최적화를 돕는 코딩 패턴
Day 3: 같은 코드가 10배 빨라지는 비밀
최적화를 돕는 코딩 패턴
Apache Spark: 대용량 데이터 처리의 시작 > Day 3: 같은 코드가 10배 빨라지는 비밀
학습 목표
Catalyst 최적화를 돕는 코딩 패턴을 익힌다 최적화를 방해하는 안티패턴을 피한다
Catalyst가 좋아하는 패턴
1. DataFrame API 사용 (SQL도 OK)
에디터 로딩 중...
2. 필터는 최대한 빨리
에디터 로딩 중...
3. 작은 테이블은 broadcast
에디터 로딩 중...
4. 파티션 수 적절히 설정
에디터 로딩 중...
Catalyst가 싫어하는 패턴 (안티패턴)
1. Python UDF (성능 저하)
에디터 로딩 중...
Python UDF는 최후의 수단!
2. collect() 후 Python 처리
에디터 로딩 중...
3. 불필요한 Shuffle 유발
에디터 로딩 중...
4. 전체 정렬 (orderBy)
에디터 로딩 중...
체크리스트
- Python UDF 대신 built-in 함수를 사용했는가?
- 불필요한 collect()가 없는가?
- 작은 테이블은 broadcast하고 있는가?
- Shuffle 횟수를 최소화했는가?
- explain()으로 실행 계획을 확인했는가?