[Apache Spark] 스파크 조인

연수·2021년 11월 14일
0

spark

목록 보기
8/26

🤲 조인

  • 내부 조인
  • 외부 조인
  • 왼쪽 외부 조인
  • 오른쪽 외부 조인
  • 왼쪽 세미 조인: 왼쪽 데이터셋의 키가 오른쪽 데이터셋에 있는 경우에는 키가 일치하는 왼쪽 데이터셋만 유지. 두 번째 DataFrame은 값이 존재하는지 확인하기 위해 값만 비교하는 용도로 사용.
  • 왼쪽 안티 조인: 왼쪽 데이터셋의 키가 오른쪽 데이터셋에 없는 경우에는 키각 일치하지 않는 왼쪽 데이터셋만 유지. 두 번째 DataFrame은 값이 존재하는지 확인하기 위해 값만 비교하는 용도로 사용.
  • 자연 조인: 두 데이터셋에 동일한 이름을 가진 컬럼을 암시적으로 결합
  • 교차 조인/카테시안 조인: 왼쪽 데이터셋의 모든 로우와 오른쪽 데이터셋의 모든 로우를 조합

 

🚨 조인 사용 시 문제점

→ 중복 컬럼명 처리

해결방법 1️⃣ 다른 조인 표현식 사용

  • 불리언 형태의 조인 표현식을 문자열이나 시퀀스 형태로 바꾸면 조인을 할 때 두 컬럼 중 하나가 자동으로 제거된다.

해결방법 2️⃣ 조인 후 컬럼 제거

  • 조인 후 문제가 되는 컬럼을 제거

해결방법 3️⃣ 조인 전 컬럼명 변경

 

❓ 스파크의 조인 수행 방식

  1. 노드 간 네트워크 통신 전략
    • 스파크는 조인 시 전체 노드 간 통신을 유발하는 셔플 조인과 그렇지 않은 브로드캐스트 조인, 두 가지 클러스터 통신 방식을 활용한다.
    • 하나의 큰 테이블을 다른 큰 테이블과 조인하면 셔플 조인이 발생한다.
    • 테이블이 단일 워커 노드의 메모리 크기에 적합할 정도로 충분히 작은 경우 브로드캐스트 조인으로 조인 연산을 최적화 할 수 있다. 조인 프로세스 내내 전체 노드가 통신하는 현상을 방지한다. 모든 단일 노드에서 개별적으로 조인이 수행되므로 CPU가 가장 큰 병목 구간이 된다.
  2. 노드별 연산 전략

 

[출처] 스파크 완벽 가이드 (빌 체임버스, 마테이 자하리아 지음)

profile
DCDI

0개의 댓글