🏆45

도전과제: 대용량 Join 최적화

Spark 성능 튜닝: Shuffle과 Skew 정복

요구사항

3개 테이블 Join 구현

Broadcast Join 적용

실행 계획 분석 (explain)

성능 측정 및 비교

평가 기준
  • Broadcast Join 정확 적용 (30%)
  • 실행 계획 분석 (25%)
  • 성능 개선 달성 (25%)
  • 코드 품질 및 설명 (20%)

시나리오

두 개의 대용량 테이블을 Join하는 쿼리를 최적화합니다.


요구사항

데이터

  • orders: 100만 건 (order_id, user_id, product_id, amount)
  • products: 1000건 (product_id, name, category)
  • users: 10만 건 (user_id, name, region)

쿼리

에디터 로딩 중...

최적화 목표

  1. 기본 Join: 3개 테이블 단순 Join
  2. Broadcast 적용: products는 작으므로 Broadcast
  3. 필터 선적용: 필요한 컬럼만 select
  4. 파티셔닝: user_id로 사전 파티셔닝

제출물

  • 최적화 전/후 실행 계획 비교 (explain)
  • 성능 측정 결과
  • 최적화 포인트 설명
힌트 보기
broadcast(products)로 작은 테이블 Broadcast
select()로 필요한 컬럼만 가져오면 Shuffle 데이터 감소
explain(True)로 상세 실행 계획 확인
BroadcastHashJoin이 보이면 성공
Exchange가 줄어들면 Shuffle 감소