🤲 조인
- 내부 조인
- 외부 조인
- 왼쪽 외부 조인
- 오른쪽 외부 조인
- 왼쪽 세미 조인: 왼쪽 데이터셋의 키가 오른쪽 데이터셋에 있는 경우에는 키가 일치하는 왼쪽 데이터셋만 유지. 두 번째 DataFrame은 값이 존재하는지 확인하기 위해 값만 비교하는 용도로 사용.
- 왼쪽 안티 조인: 왼쪽 데이터셋의 키가 오른쪽 데이터셋에 없는 경우에는 키각 일치하지 않는 왼쪽 데이터셋만 유지. 두 번째 DataFrame은 값이 존재하는지 확인하기 위해 값만 비교하는 용도로 사용.
- 자연 조인: 두 데이터셋에 동일한 이름을 가진 컬럼을 암시적으로 결합
- 교차 조인/카테시안 조인: 왼쪽 데이터셋의 모든 로우와 오른쪽 데이터셋의 모든 로우를 조합
🚨 조인 사용 시 문제점
→ 중복 컬럼명 처리
해결방법 1️⃣ 다른 조인 표현식 사용
- 불리언 형태의 조인 표현식을 문자열이나 시퀀스 형태로 바꾸면 조인을 할 때 두 컬럼 중 하나가 자동으로 제거된다.
해결방법 2️⃣ 조인 후 컬럼 제거
해결방법 3️⃣ 조인 전 컬럼명 변경
❓ 스파크의 조인 수행 방식
- 노드 간 네트워크 통신 전략
- 스파크는 조인 시 전체 노드 간 통신을 유발하는 셔플 조인과 그렇지 않은 브로드캐스트 조인, 두 가지 클러스터 통신 방식을 활용한다.
- 하나의 큰 테이블을 다른 큰 테이블과 조인하면 셔플 조인이 발생한다.
- 테이블이 단일 워커 노드의 메모리 크기에 적합할 정도로 충분히 작은 경우 브로드캐스트 조인으로 조인 연산을 최적화 할 수 있다. 조인 프로세스 내내 전체 노드가 통신하는 현상을 방지한다. 모든 단일 노드에서 개별적으로 조인이 수행되므로 CPU가 가장 큰 병목 구간이 된다.
- 노드별 연산 전략
[출처] 스파크 완벽 가이드 (빌 체임버스, 마테이 자하리아 지음)