Hive Metastore는 Hive뿐 아니라 Trino, Spark, Presto, Iceberg 등 다양한 도구들이 테이블 및 파티션 정보를 공유하기 위해 사용하는 중앙 메타데이터 저장소이다. 이 Metastore는 보통 RDBMS(MySQL, PostgreSQL 등) 에 저장되며, 그 내부에는 여러 개의 테이블이 존재한다. 이 테이블들은 Hive의 Database, Table, Column, Partition 등을 관리하는 데 사용된다.
| 구성 요소 | 역할 |
|---|---|
| Trino | SQL 쿼리 처리, Iceberg 테이블 읽기/쓰기 수행 |
| HMS | Trino의 Iceberg 카탈로그에서 메타데이터 조회 |
| PostgreSQL | HMS 내부 메타데이터 저장소 |
| MinIO | Iceberg 테이블의 실제 데이터(.parquet 등) 저장 |
PostgreSQL 연결에 사용한 연결 속성이다.
| 속성 | 값 |
|---|---|
| 데이터베이스 | hive_metastore |
| 사용자 아이디 | hive |
| 사용자 패스워드 | hive |
| 테이블명 | 역할 요약 |
|---|---|
DBS | 데이터베이스(스키마) 정보 저장 |
TBLS | 테이블 메타데이터 저장 |
SDS | 저장 포맷(StorageDescriptor), 컬럼 포맷, 위치 등 |
SERDES | SerDe 관련 정보 (입출력 포맷 지정) |
COLUMNS_V2 | 테이블 및 파티션 컬럼 정보 |
PARTITIONS | 파티션 정보 저장 (파티션 값, 테이블과의 연결 등) |
PARTITION_KEY_VALS | 실제 파티션 값 저장 |
PARTITION_KEYS | 파티션 키(컬럼명, 타입 등) 정의 |
PARTITION_PARAMS | 파티션 속성 (예: 'transient_lastDdlTime') |
TABLE_PARAMS | 테이블 속성 저장 |
SD_PARAMS | StorageDescriptor 속성 |
COLUMN_STATS_ACCURACY | 통계 정확도 관련 정보 |
TAB_COL_STATS | 테이블 컬럼 통계 |
PART_COL_STATS | 파티션 컬럼 통계 |
CREATE TABLE iceberg.default.my_profile (
id BIGINT ,
name VARCHAR,
age INT,
created_at TIMESTAMP(6)
);





INSERT INTO iceberg.default.my_profile
SELECT
i_val * 10000 + j_val AS id,
'user_' || CAST(i_val * 10000 + j_val AS VARCHAR),
MOD(j_val, 100) AS age,
CURRENT_TIMESTAMP AS created_at
FROM UNNEST(SEQUENCE(0, 9999)) AS t1(i_val)
CROSS JOIN UNNEST(SEQUENCE(0, 9999)) AS t2(j_val);