EXCELSIOR

하이브 버킷(Hive Bucket) 본문

DataBase/Hadoop

하이브 버킷(Hive Bucket)

Excelsior-JH 2016. 11. 30. 20:19
하이브는 효율적인 쿼리문 수행을 위해 버킷이라는 데이터 모델을 제공한다. 버킷은 버킷 칼럼 해시를 기준으로 데이터를 지정된 개수의 파일로 분리해서 저장한다. 버킷은 테이블을 생성할 때 다음과 같은 형태로 선언한다.
CLUSTERED BY (칼럼) INTO 버킷 개수 BUCKETS;

버킷을 사용하면 쿼리의 성능을 향상시킬 수 있다. 예를 들어, 조인키로 버킷을 생성해두면 생성된 버킷 중 필요한 버킷만 조회하면 되기 때문에 디렉터리 전체를 풀스캔하는 것보다 훨씬 빠르게 작업을 처리할 수 있다. 또한 버킷을 이용하면 데이터 샘플링을 이용한 다양한 쿼리를 수행할 수 있다.


그럼 이제 실제 버킷을 생성해보도록 하자. 다음의 테이블 생성은 UniqueCarrier 칼럼을 대상으로 20개의 버킷을 생성한다.

hive> CREATE TABLE airline_delay2(Year INT, Month INT, UniqueCarrier STRING, ArrDelay INT, DepDelay INT)
    > CLUSTERED BY (UniqueCarrier) INTO 20 BUCKETS;
OK
Time taken: 1.153 seconds

테이블을 생성했으면 2008년도 항공 운항 지연 데이터를 새로운 테이블에 등록한다. 

hive> INSERT OVERWRITE TABLE airline_delay2
      > SELECT Year, Month, UniqueCarrier, ArrDelay, DepDelay
      > FROM airline_delay
      > WHERE delayYear = 2008;

쿼리문에서 버킷 데이터 샘플을 사용하려면 TABLESAMPLE 절을 이용하면 된다. 다음은 20개의 버킷 중 첫 번째 버킷에서 샘플을 조회하는 쿼리문이다.

hive> SELECT UniqueCarrier, COUNT(*)
      > FROM airline_delay2
      > TABLESAMPLE(BUCKET 1 OUT OF 20)
      > GROUP BY UniqueCarrier


'DataBase > Hadoop' 카테고리의 다른 글

스쿱(sqoop) 설치  (0) 2016.12.07
아파치 스쿱(Apache Sqoop)  (1) 2016.12.07
하이브 조인(Hive Join)  (0) 2016.11.30
하이브(Hive) - 데이터 업로드  (0) 2016.11.26
Apache-Hive : 하이브QL(Hive QL) - 테이블 생성  (0) 2016.11.21
Comments