Hive에서 Index(색인) 는 테이블에서 데이터를 빠르게 검색할 수 있도록 도와주는 기능이다
일반적인 RDBMS의 인덱스와 비슷하지만, Hive는 대량의 데이터를 다루기 때문에 작동 방식이 약간 다르다.
Hive는 기본적으로 테이블을 풀 스캔(Full Table Scan) 하기 때문에, 데이터 양이 많아지면 쿼리 속도가 느려질 수 있다.
Index를 사용하면 검색 범위를 줄여서 성능을 향상시킬 수 있다.
사용 예시:
ex)
| Compact Index | Hive 기본 제공 인덱스. 별도의 테이블에 인덱스 저장 | 단순 조회 최적화 |
| Bitmap Index | Compact Index보다 효율적, 중복 데이터가 많을 때 유용 | 성별, 상태값 같은 범주형 데이터 |
| Bloom Filter Index | 존재 여부를 빠르게 확인하는 인덱스 | 큰 테이블에서 특정 키가 있는지 검색할 때 |
CREATE INDEX idx_customer_id ON TABLE orders (customer_id) AS 'COMPACT' WITH DEFERRED REBUILD;
👉 인덱스 수동 생성(갱신)
ALTER INDEX idx_customer_id ON orders REBUILD;
Hive에서는 인덱스가 별도의 테이블 형태로 저장
SHOW FORMATTED INDEX ON orders;
DROP INDEX idx_customer_id ON orders;
👉 대용량 데이터에서는 Partitioning과 Bucketing을 먼저 고려하고, 정말 필요한 경우에만 Index 사용을 추천!
| Partitioning | 큰 데이터셋에서 검색 성능 향상 | 작은 데이터에는 비효율적 | 날짜별 로그 데이터 |
| Bucketing | 조인(Join) 성능 향상 | 해시 기반으로 나누기 때문에 범위 검색에 비효율적 | 동일 키 값 그룹화 |
| Indexing | WHERE 조건 검색 최적화 | 유지보수 비용 높음, 일부 쿼리에서 비효율적 | 특정 컬럼 검색 속도 향상 |
| DB - Hive (msck repair table) (0) | 2025.02.16 |
|---|---|
| DB - partition 접근 (0) | 2025.02.16 |
| Hive - UDF (3) | 2025.02.02 |
| Hive - HQL 함수 (0) | 2025.02.02 |
| SQL - begin, index, anti-join (1) | 2025.01.19 |