언어 매뉴얼 - JOIN 최적화

언어 매뉴얼 - JOIN 최적화 (Language Manual - Join Optimization)

조인(JOIN)은 Hive 쿼리에서 가장 비용이 큰 연산 중 하나예요. Hive는 조인 성능을 높이기 위해 MapJoin, Bucket MapJoin, Skew Join, SMB Join(Sort-Merge-Bucket Join) 같은 최적화 기법을 제공합니다.

출처: 문서

본문

Hive의 조인 최적화 방법을 설명합니다.

MapJoin (Map-side Join)

MapJoin은 작은 테이블을 각 맵 태스크의 메모리에 로드해 리듀스 단계 없이 맵 단계에서 조인을 수행하는 기법입니다. 한쪽 테이블이 충분히 작을 때 매우 효율적입니다.

  • hive.auto.convert.join 속성으로 자동 전환을 활성화할 수 있습니다.
  • hive.mapjoin.smalltable.filesize 같은 속성으로 작은 테이블의 크기 기준을 정합니다.

Bucket MapJoin

조인할 양쪽 테이블이 동일한 버킷(bucket) 개수로 버킷화되어 있으면, 각각 대응되는 버킷끼리만 조인할 수 있어 셔플 비용을 줄입니다. 양쪽 테이블이 같은 버킷 키를 기준으로 버킷화되어 있어야 합니다.

Skew Join

데이터 편중(skew)이 있을 때 특정 키에 데이터가 몰리는 문제를 해결하기 위한 기법입니다. hive.optimize.skewjoin 같은 설정으로 활성화할 수 있습니다.

SMB Join (Sort-Merge-Bucket Join)

양쪽 테이블이 동일한 키로 정렬·병합·버킷화되어 있으면 버킷별 정렬 병합 방식으로 조인을 수행해 셔플과 정렬 비용을 크게 줄입니다.

  • 관련 설정: hive.auto.convert.sortmerge.join

합니다.

참고: 각 기법별 정확한 속성 이름과 기본값, 버킷/정렬 요구사항은 원문 문서를 참고하세요.

더 알아보기 (Learn more)

  • 조인 최적화를 적용하려면 테이블의 버킷·정렬 구조를 먼저 설계해야 해요. 작은 테이블은 MapJoin, 대용량 동일 구조 테이블은 SMB Join이 유리합니다.