40

실습: 느린 Job을 10배 빠르게

Spark 성능 튜닝: Shuffle과 Skew 정복

학습 목표

Broadcast Join을 적용할 수 있다 Salting으로 Skew를 해결할 수 있다 explain()으로 실행 계획을 분석할 수 있다

미션: 느린 집계를 빠르게 만들기

Skew가 있는 데이터셋에서 집계 성능을 개선합니다.

시나리오

  • 주문 데이터 100만 건
  • 판매자 1000명
  • 1명의 메가 판매자가 전체의 50% 차지

요구사항

  1. Skew 데이터 생성 및 확인
  2. 기본 groupBy 집계 (느림)
  3. Salting으로 개선된 집계
  4. 성능 비교

힌트

  • union()으로 Skew 데이터 추가
  • concat()으로 솔트 키 생성
  • split()으로 솔트 제거
에디터 로딩 중...
힌트 보기
  • concat()으로 문자열 합치기: concat(col, lit("_"), rand_col)
  • floor(rand() * N)으로 0~N-1 랜덤 정수
  • regexp_replace()로 패턴 제거: regexp_replace(col, "_\\d+$", "")
  • cache()로 중간 결과 캐싱하면 공정한 비교 가능
  • 실제 클러스터에서는 Salting 효과가 더 큼 (로컬에서는 차이 작을 수 있음)
정답 보기
에디터 로딩 중...