Hive 통계 정보
· Version : Hadoop 3.0.0-cdh6.3.2, Hive
하이브는 테이블의 로우 수 , 파일 개수, 사이즈 등의 통계 정보를 이용하여 데이터를 빠르게 처리한다. 통계정보는 CBO(Cost Base Optimize) 방식이며, 실행계획 최적화, 단순 카운트 쿼리 등에 사용된다. 하이브는 기본적으로 통계 정보를 자동 수집하도록 되어 있어 따로 설정하지 않아도 테이블의 메타정보에 통계정보를 수집한다. 하지만 사용하는 버전, 제조사에 따라 설정이 다를 수 있으니 반드시 재확인을 할 수 있도록 한다. 통계 정보를 설정하는 옵션은 아래와 같다.
set hive.stats.autogather=true; set hive.stats.column.autogather=true; |
DML을 이용하여 처리할 때는 통계 정보를 자동으로 수집하지만 파티션 위치에 파일을 직접 복사한 경우 메타데이터가 갱신되지 않아 통계 정보가 정확하지 않을 수 있다. 이 경우 Analyze명령을 사용하여 수동으로 통계 정보를 업데이트 할수 있다.
--tbl 테이블 통계정보 수집 ANALYZE TABLE tbl COMPUTE STATISTICS;
--tbl 테이블의 yymmdd가 '2020-01-01'인 파티션의 통계정보 수집 ANALYZE TABLE tbl PARTITION(yymmdd='2020-01-01') COMPUTE STATISTICS;
--컬럼 통계정보 수집 ANALYZE TABLE tbl PARTITION(yymmdd='2018-01-01') COMPUTE STATISTICS FOR COLUMNS; |
통계정보는 desc extended|formatted 명령으로 확인할 수 있으며, 테이블 정보, 파티션 정보에 통계정보가 추가되어 나타난다.
desc formatted tbl partition(yymmddval='20180101'); |
Table Parameters: COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} EXTERNAL TRUE last_modified_by root last_modified_time 1577490527 numFiles 9973 numPartitions 392 numRows 2305106979 rawDataSize 12729039219 totalSize 717032673468 transient_lastDdlTime 1577490527 |
통계정보를 활용하기 위해서는 쿼리 호출시 통계 정보를 활용할 수 있도록 설정해야 한다. 아래 예제는 단순 count 하는 쿼리를 MapReduce 작업을 통하지 않고 통계정보를 이용하여 데이터를 확인할 수 있다.
set hive.compute.query.using.stats=true;
-- 통계정보를 활용하여 쿼리 실행 hive> select count(*) from tbl; |
[참고자료]
· https://cwiki.apache.org/confluence/display/Hive/StatsDev
2020-01-28 / Sungwook Kang / http://sungwookkang.com
Hadoop, Big Data, 하둡, 빅데이터, 데이터분석, Hive, Hive 쿼리, Hive Query, 하이브 통계, Hive Statistics, Hive CBO, 하이브 옵티마이저
'SW Engineering > Hadoop' 카테고리의 다른 글
Hive 파일 압축 (0) | 2020.02.07 |
---|---|
Hive 파일 Merge (0) | 2020.02.04 |
Hive 쿼리 실행계획 보기 (0) | 2020.01.17 |
YARN Node Labels (노드 레이블) (0) | 2020.01.16 |
YARN 메모리 설정 (0) | 2020.01.14 |