본문 바로가기
Spark

[Spark] Join 최적화로 bucketing 쓸때 주의사항

by CarlaDE 2024. 7. 7.

스파크에서 조인 수행 최적화 목적으로 Bucketing을 활용한다.

이때 주의할 점이 있다.

 

  1. 두 테이블 모두 같은 수의 버킷으로 bucketing
  2. 두 테이블은 동일한 열에 bucketing

목표

: 셔플/교환을 줄이고 pre- shuffled data 사용하여 테이블을 join 하기

두 테이블이 이미 partitioned 되어 있고, shuffle할 필요가 없음을 catalyst optimizer가 깨닫게 만들기

 

즉 물리적 실행계획상에

* SortMergeJoin을 적용하기

* 테이블에 broadcast / Hash join 이 적용되지 않게 만들기

 

 

Bad Case

  1. Non- bucketed 와 Bucketed를 Join하면 어짜피 교환작업 수행됨
  2. 2개의 bucketed table을 조인하더라도, bucket column(Id) 이 아닌 non- bucketed column (employeeID) 을 키로 조인하면 어짜피 교환작업 수행됨
  3. 버킷 개수가 서로 다른 2개의 테이블 조인 해도 어짜피 교환작업 수행됨

 

<참고>

https://medium.com/analytics-vidhya/spark-bucketing-is-not-as-simple-as-it-looks-c74f105f4af0

'Spark' 카테고리의 다른 글

[Spark] shuffle 연산 & bucketing 하는 이유  (0) 2024.07.07