Apache Hive의 테이블(Table)은 데이터 웨어하우스 내에서 데이터를 저장하고 관리하는 기본 단위이다. Hive는 관계형 데이터베이스처럼 테이블을 지원하며, 다양한 저장 형식과 파티션 기능을 제공하여 대규모 데이터를 효율적으로 관리할 수 있다.
개요
Hive 테이블은 HDFS(Hadoop Distributed File System)에 저장된 데이터를 논리적으로 표현하며, 사용자는 HiveQL을 사용하여 데이터를 질의하고 조작할 수 있다. Hive는 테이블을 관리형(Managed)과 외부(External) 테이블로 구분하며, 데이터 저장 형식과 파티션, 버킷 기능 등을 활용할 수 있다.
Hive 테이블의 종류
Hive는 데이터 저장 방식에 따라 두 가지 유형의 테이블을 제공한다.
- 관리형 테이블(Managed Table)
- Hive가 데이터 파일을 직접 관리하며, 테이블 삭제 시 데이터도 삭제됨.
- 외부 테이블(External Table)
- 데이터는 외부 저장소에 존재하며, 테이블 삭제 시 데이터는 유지됨.
관리형 테이블
CREATE TABLE employees (
id INT,
name STRING,
department STRING
) ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
- 데이터는 Hive의 기본 데이터 저장소(HDFS) 내부에 저장됨.
- 테이블을 삭제(DROP)하면 데이터도 함께 삭제됨.
외부 테이블
CREATE EXTERNAL TABLE sales (
order_id INT,
amount DOUBLE,
date STRING
) ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE
LOCATION '/user/hive/external/sales_data';
- 데이터는 지정된 외부 경로(HDFS, S3 등)에 저장됨.
- 테이블을 삭제해도 데이터는 유지됨.
Hive 메타데이터(Metadata)
Hive는 테이블 및 데이터의 구조 정보를 메타스토어(Metastore)에 저장하며, 이 메타데이터는 테이블의 구조와 속성을 관리하는 역할을 한다.
- 테이블 스키마 - 테이블의 컬럼명, 데이터 타입, 파티션 정보 저장.
- 스토리지 위치 - 데이터 파일이 저장된 HDFS 경로.
- 파티션 정보 - 테이블이 파티션을 포함할 경우 파티션별 메타데이터 저장.
- 버킷 정보 - 데이터가 특정 컬럼 기준으로 버킷화된 경우 버킷 개수 저장.
- 파일 형식 - TEXTFILE, ORC, PARQUET 등 저장 형식 정보.
Hive 메타데이터는 일반적으로 관계형 데이터베이스(MySQL, PostgreSQL)에서 관리되며, Hive의 성능 최적화 및 테이블 관리를 담당한다.
파티션 테이블(Partitioned Table)
Hive는 데이터를 특정 컬럼을 기준으로 나누어 저장하는 파티션(Partition) 기능을 제공하여 성능을 최적화한다.
CREATE TABLE logs (
event STRING,
timestamp STRING
) PARTITIONED BY (date STRING)
STORED AS PARQUET;
- 파티션 생성 및 데이터 추가
ALTER TABLE logs ADD PARTITION (date='2023-01-01') LOCATION '/data/logs/2023-01-01';
버킷 테이블(Bucketed Table)
버킷(Bucket)은 테이블 데이터를 해시 함수 기반으로 나누어 저장하여 성능을 향상시키는 기법이다.
CREATE TABLE users (
id INT,
name STRING
) CLUSTERED BY (id) INTO 4 BUCKETS;
- 버킷을 사용하면 특정 컬럼(id)에 따라 데이터를 4개의 파일로 나눠 저장하여 성능을 향상시킴.
테이블 데이터 조작
데이터 삽입
INSERT INTO TABLE employees VALUES (1, 'Alice', 'HR'), (2, 'Bob', 'IT');
데이터 조회
SELECT * FROM employees WHERE department = 'IT';
테이블 삭제
DROP TABLE employees; -- 관리형 테이블은 데이터까지 삭제됨.
DROP TABLE IF EXISTS sales; -- 외부 테이블의 경우 메타데이터만 삭제됨.
Hive 테이블의 특징
- HDFS 기반으로 대용량 데이터를 저장 및 관리.
- 스키마 온 리드(Schema-on-Read) 방식으로 데이터를 읽을 때 스키마 적용.
- 다양한 저장 형식 지원(TEXTFILE, ORC, PARQUET, AVRO 등).
- 파티션과 버킷 기능을 사용하여 성능 최적화 가능.
- 테이블 정보는 메타스토어(Metastore)에 저장되어 빠른 데이터 탐색이 가능.