Sort Merge Join은 먼저 동일한 워커 노드로 데이터를 shuffling한 다음 join key를 기반으로 데이터를 정렬 후 데이터를 병합하는 방식이다.
Shuffle Hash Join은 동일한 워커 노드에서 동일한 값의 Join Key로 데이터를 이동한 후 Hash Join을 실행한다.
Broadcast Join은 일반적으로 큰 테이블과 작은 테이블 간의 조인에 사용되는 전략이다. 테이블이 단일 워커 노드의 메모리 크기에 적합할 정도로 충분히 작은 경우 조인 연산을 최적화 할 수 있다. 이 방법은 작은 크기의 테이블을 모든 워커 노드에 복제하기 때문에 노드간의 shuffling 비용이 절약된다는 장점이 있다.
Spark는 Join 관계의 테이블 하나의 크기가 10mb 보다 작을 때 Broadcast Join을 사용한다.
이 값은
spark.sql.autoBroadcastJoinTreshold
설정을 사용하여 변경 가능
참고자료