Hive Skewed (스큐)
· Version : Hadoop 3.0.0-cdh6.3.2, Hive
스큐(skewed)의 사전적 의미는 “비스듬하다”라는 뜻으로, 특정 데이터가 많이 입력되는 경우, 데이터 파일 한쪽에만 너무 많은 데이터가 쌓이는 것을 의미한다. 하이브에서 스큐 테이블로 생성하면 따로 파일을 만들어서 사용하므로 성능상 이점이 있다. 스큐는 파티션과 유사하지만 용도가 조금 다르다. 파티션은 크게 데이터를 분류하는 용도로 사용되며, 스큐는 컬럼의 데이터를 구분할 때 사용된다.
하이브 매뉴얼에는 아래와 같은 내용이 있다. 스큐 테이블은 스큐의 정보를 저장하고, 리스트 버켓팅까지 추가하면 스큐된 서브 디렉터리를 생성한다.
Skewed Table vs. List Bucketing Table · Skewed Table is a table which has skewed information. · List Bucketing Table is a skewed table. In addition, it tells Hive to use the list bucketing feature on the skewed table: create sub-directories for skewed values.
|
예를 들어, col_1이라는 컬럼에 1 ~ 1000 숫자 사이의 데이터가 입력된다고 할때, 파티션은 1000개가 생성된다. 그런데 대부분의 데이터가 1, 2라고 가정한다면 스큐는 1, 2 데이터 파일과 나머지 3개의 디렉토리로 나누어서 파일로 구별하여 저장한다. 이렇게 스큐를 사용하여 파일 갯수를 줄이면 네임노드의 관리포인트가 줄어들어 네임노드의 성능 및 관리에 효율적이다. 실제 데이터를 조인할 경우에도 많은 성능 이점이 있다.
아래 스크립트는 스큐 테이블을 생성한다. STORED AS DIRECTORIES 옵션을 사용하지 않으면 디렉토리 구분없이 파일로 따로 저장한다.
-- col2 입력 값중 1로 들어오는 값만 스큐로 저장 CREATE TABLE tbl_skewed ( col_1 STRING, col_2 STRING ) SKEWED BY (col2) ON ('1') STORED AS DIRECTORIES LOCATION '/user/tbl_skewed/'; |
2019-12-23 / Sungwook Kang / http://sungwookkang.com
Hadoop, hive, 하이브, hive skewed, 하이브 스큐
'SW Engineering > Hadoop' 카테고리의 다른 글
MapReduce (맵리듀스) (0) | 2019.12.28 |
---|---|
Hive Buckets (버켓) (0) | 2019.12.27 |
Hive Partition 생성,수정,복구 (0) | 2019.12.21 |
Hive Meta Database (0) | 2019.12.19 |
Hive Meta Store 설정 (0) | 2019.12.18 |