Hive 추가 정리

김도비·2023년 1월 8일
0

Bigdata

목록 보기
7/9

Hive를 사용하며 상세한 Hive에 내용을 잘모르는 것 같아 정리를 해본다.

Managed Table vs External Table

메타스토어에 저장되는 테이블의 종류에는 2가지가 존재한다.

1) Managed Table(Internal table)

  • 생성 시 location(hive.metastore.warehouse.dir) 위치에 directory에 저장되는 테이블
  • 기본적으로 /user/hive/warehouse/databasename.db/tablename/ 위치에 저장
  • location(hive.metastore.warehouse.dir) 변경 가능
  • DROP Table/Partition 시, 메타스토어의 정보와 데이터가 함께 삭제
  • 수명주기를 관리해야 하거나, 임시테이블을 생성할 때 사용

2) External table

  • 외부테이블은 외부 파일의 메타 데이터/스키마를 설명하는 테이블
  • 테이블 생성 시 location을 지정 해야되는 테이블
  • 파일이 이미 있거나, 원격 위치(S3,원격 HDFS)에 있을 때 사용
  • DDROP Table/Partition 시, 메타스토어의 정보만 삭제되고, 데이터와 디렉토리는 유지(옵션을 통해 삭제 가능)

Bucketing

버켓팅(Bucketing)

  • 버켓팅은 지정된 칼럼의 값을 해쉬 처리하고 지정한 수의 파일로 나누어 저장
  • 조인에 사용되는 키로 버켓 칼럼생성 -> 소트 머지 버켓(SMB) 조인으로 처리되어 수행속도가 빨라짐
  • Bucketing을 하면 Join을 하거나 샘플링 작업을 할 경우 성능향상

버켓팅과 파티션의 차이 ?
간단하게 말하자면 파티션은 데이터를 디렉토리별로 나누어 저장하는 방식이고,
버켓팅에 경우 데이터를 파일별로 나누어 저장하는 방식


Join Type

1) Shuffle Join(Merge Join)

  • 셔플(Shuffle) 단계에서 조인을 처리
  • 두 개의 테이블을 조인할 때 각 테이블을 맵(Map) 단계에서 읽고, 파티션 키를 조인 키로 설정하여 셔플 단계에서 조인 키를 기준으로 리듀서로 데이터가 이동되고 테이블을 조인

2) Map Join(Broadcast Join)

  • 두 개의 테이블 조인 시 하나의 테이블이 메모리에 로드 되어 처리
  • 하나의 테이블이 메모리에 올라갈 수 있을 정도로 작을 경우 사용
  • hive.auto.convert.join이 true일 때 적용
  • hive.auto.convert.join.noconditionaltask.size= 10MB(기본값)

3) SMB Join

  • 조인 테이블이 버켓팅 되어 있을 때 사용
  • 버켓팅된 키의 정보를 이용하여 빠르게 조인을 처리
  • 어떤 크기의 테이블에서도 가장 빠른 속도로 조인을 처리
profile
모든 걸 기록하자

0개의 댓글