impala는 테이블 사이즈가 큰지 작은지, distinct 값들이 많은지 적은지 등에 대한 정보가 있다면 join 쿼리나 insert 작업을 적절하게 구조화하고 병렬화할 수 있다.
1. COMPUTE STATS
COMPUTE STATS [db_name.]table_name [ ( column_list ) ]
-- column_list 여러개면 ,로 구분
1) compute incremental stats
COMPUTE INCREMENTAL STATS [db_name.]table_name [PARTITION (partition_spec)]
- incremental 만 partition지정 가능하다
- compute stats와 compute incremental stats를 한 테이블에 같이 사용하지 않는다. 둘 중 하나로 전환할 경우 drop stats 실행 후 전환한다.
2) sampling
- 설정 enable 필요함
config 변경 –enable_stats_extrapolation 또는
특정 테이블만 설정
ALTER TABLE mytable test_table SET TBLPROPERTIES("impala.enable.stats.extrapolation"="true")
COMPUTE STATS [db_name.]table_name [ ( column_list ) ] [TABLESAMPLE SYSTEM(percentage) [REPEATABLE(seed)]]
-- 10%는 TABLESAMPLE SYSTEM(10)
-- seed 임의의 양의 정수 - 쿼리가 다시 실행될 때 매번 동일한 데이터 파일 집합을 선택하도록 하는 옵션
2. ALTER
1) row count update
alter table <TABLE_NAME> set tblproperties('numRows'=<rowcount>, 'STATS_GENERATED_VIA_STATS_TASK'='true');
2) column stats update
alter table <TABLE_NAME> set set column stats <columnname> ('numDVs'='<DV>', 'numNulls'='<numN>', 'maxsize'='<Max_size>, 'avgsize'='<Avg_size>');
- column type에 따라서 maxsize, avgsize 는 update 할 수 없다(고정값)
3. 통계정보 확인
show table stats [db_name.]table_name
show column stats [db_name.]table_name
-- '-1'이 있으면 통계정보 없는 상태
또는 쿼리 실행전 explain 했을때 통계정보가 없다는 warning이 발생하지 않으면 된다
'Data > Hadoop Eco' 카테고리의 다른 글
| local airflow, cloudera spark(yarn) 연결 테스트 (0) | 2025.04.28 |
|---|---|
| HBase, Pheonix tutorial (0) | 2024.05.06 |
| ICEBERG, OZONE tutorial (0) | 2024.05.03 |
| Kudu migration 방안 (0) | 2024.04.15 |
| Hive Metastore에서 테이블 리스트 추출 (0) | 2024.04.05 |