728x90
반응형
SMALL
16주차 화요일, 77일차 Today I Learned
Spark Shuffling 최적화
✏️ 학습 내용
1. Repartition, Coalesce
- Repartition : 전체적으로 파티션의 수를 늘려 병렬성을 증가시킴
- repartition (해싱을 사용하는 방법)
- repartitionByRange (특정 컬럼의 값을 기준으로 나눠주는 방법)
- Coalesce : 파티션의 수를 줄이는 용도
2. DataFrame 관련한 힌트들
Spark SQL Optimizer에게 Execution plan을 만듦에 있어 특정한 방식을 사용하도록 제안
- Partitioning 관련 힌트들 : Coalesce, Repatition, RepatitionRange 같은 것들이 동작할 때 선택한 최적화 방식이 원하는 것과 다를 경우 사용
- Join 관련 힌트들 : 옵티마이저가 원하지 않는 방식의 조인 선택 시, 옵티마이저에게 제안 가능
3. AQE (Adaptive Query Execution)
기본적으로 동적으로 쿼리 플랜을 바꾸는데, 그 시점은 셔플링을 하기 전/후 스테이지마다 발생한다.
- Dynamically coalescing (Post) shuffle partitions (Spark 3)
- 셔플링 후에 파티션 수를 동적으로 조정
- Dynamically switching join strategies (Spark 3.2)
- 조인 방법 바꾸기 (AQE가 동적으로 Join 전략을 스위칭함)
- Dynamically optimizing skew joins (Spark 3)
- 스큐된 조인할 때 최적화하기
반응형
💡 배운 점
- Repartition과 Coalesce를 사용하여 파티션 크기와 분포를 조절할 수 있다는 것을 알게 되었다.
- AQE에 대해 배웠다.
☁️ 소감
오늘 배운 내용에 대해 더 살펴보면 좋을 것 같다.
728x90
반응형
LIST
'Data Engineering > grepp 데브코스 : TIL' 카테고리의 다른 글
[TIL_2024.02.08] Spark ML (1) : 소개 및 기능, 모델 빌딩, 피쳐 변환, 파이프라인 (0) | 2024.02.27 |
---|---|
[TIL_2024.02.07] Spark Partition (0) | 2024.02.27 |
[TIL_2024.02.05] Spark 기타 기능, 메모리 관리 (1) | 2024.02.27 |
[TIL_2024.01.29-02.02] 머신러닝 : ML E2E, 기초개념, 기초선형대수, 확률기초/분포, 선형회귀/분포 (0) | 2024.02.26 |
[TIL_2024.01.26] 스트리밍 처리 (5) : Spark Streaming (1) | 2024.02.26 |