-
[Hive] Hive query - Bucketing table 알아보기데이터 엔지니어링/Hive 2022. 10. 6. 21:50반응형
Bucketing이란?
CREATE [EXTERNAL] TABLE [if not exsits] default.person( col1 STRING, col2 STRING, col3 STRING, col4 STRING ) CLUSTERD BY (col1) STORED BY ([col1, col2] [ASC | DESC]) into 256 BUCKETS STORED AS ORC;
- hive에서는 파일 단위로 데이터를 관리하는데 데이터들를 하나의 파일에 몰아서 관리하는 것이 아니라 여러개의 파일로 나눠서 데이터를 관리하는 것.
- Bucketing은 관리용이하게 하거나 성능 개선을 위해 사용한다.
- Clustered라는 속성에 column_name을 지정해 두면 이 column_name을 캐싱하여 Bucketing기준이 된다.
- sorted by 속성에 정렬 조건을 줄 수 있다. (asc, desc)
- into 조건에 숫자 만큼 bucketing을 할 수 있다.
Bucketing table 설정 법
- CREATE TABLE을 하게 되면 default로 설정된 bucket갯수 만큼 파일이 생기게되는데 (보통 10개에 나눠서 데이터 나뉜 파일이 생성)
- bucketing은 cluster옵션에 설정한 컬럼기준으로 캐싱이 되어 설정한 컬럼 기준으로 데이터 처리하여 빨라지게 되며
- 설정한 bucket 숫자 만큼 파일이 생성되고 그 파일들에 데이터를 나눠서 보관하게 된다.
- hive 2.x 이전에는 hive.enforce.bucketing=true를 설정하여야 bucketing을 진행 할 수 있었지만, 이후버전은 설정하지 않아도 된다.
CREATE EXTERNAL TABLE if not exists test.person( pid INT, name STRING, age INT, address STRING ) CLUSTERED BY (pid) SORTED BY (name ASC) into 256 BUCKETS STORED AS ORC LOCATION 'hdfs://namenode:8020/temp/';
참고문헌
반응형'데이터 엔지니어링 > Hive' 카테고리의 다른 글