Hadoop EcoSystem

[Hive] 데이터베이스

비번변경 2024. 1. 17. 16:16

개요

빅데이터 관련 프로젝트에 투입되어 있으면서 파티션이라는 개념을 듣게 되었는데, 관련하여 데이터베이스 개념부터 잡아야 할 것 같아 정리한다.

 

 

데이터베이스

Hive에서 데이터베이스는 테이블 이름을 구별하기 위한 네임스페이스 역할을 한다. 또한 테이블 데이터의 기본 저장 위치를 제공하는데, 만약 데이터베이스 생성 시 저장 위치를 지정하지 않으면 기본값으로 설정된다.

# 데이터 웨어하우스 기본 위치
hive.metastore.warehouse.dir = /user/hive/warehouse

# Hive 데이터베이스 기본 위치
/user/hive/<DATABASE_NAME>.db

# Hive 테이블 기본 위치 
/user/hive/<DATABASE_NAME>.db/<TABLE_NAME>

데이터웨어하우스, 데이터베이스, 테이블의 기본 위치는 위와 같다.

 

 

데이터베이스 생성

Hive 데이터베이스를 생성하는 DDL은 다음과 같다. 참고로 Hive에서 데이터베이스와 스키마는 동일하다.

CREATE [REMOTE] (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
  [COMMENT database_comment]
  [LOCATION hdfs_path]
  [MANAGEDLOCATION hdfs_path]
  [WITH DBPROPERTIES (property_name=property_value, ...)];
  
  
-- 예시
CREATE DATABASE test_db;
CREATE SCHEMA test_db;

데이터베이스 생성 시 LOCATION 구문으로 기본 데이터 저장 위치를 지정할 수 있다.

 

 

데이터베이스 삭제

DROP 문을 이용해 데이터베이스를 삭제할 수 있다. 

DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];


-- 예시
DROP DATABASE test_db;
DROP SCHEMA test_db;

기본적으로 RESTRICT 옵션으로 수행하기 때문에 데이터베이스가 비어있지 않으면 DROP 수행에 실패한다. 만약 데이터베이스 내 테이블도 삭제한다면 CASCADE 옵션을 추가하여 실행한다.

 

 

데이터베이스 변경

ALTER 문을 이용해 데이터베이스를 수정할 수 있다.

ALTER (DATABASE|SCHEMA) database_name SET DBPROPERTIES (property_name=property_value, ...);   -- (Note: SCHEMA added in Hive 0.14.0)
 
ALTER (DATABASE|SCHEMA) database_name SET OWNER [USER|ROLE] user_or_role;   -- (Note: Hive 0.13.0 and later; SCHEMA added in Hive 0.14.0)
  
ALTER (DATABASE|SCHEMA) database_name SET LOCATION hdfs_path; -- (Note: Hive 2.2.1, 2.4.0 and later)
 
ALTER (DATABASE|SCHEMA) database_name SET MANAGEDLOCATION hdfs_path; -- (Note: Hive 4.0.0 and later)

참고로 LOCATION을 변경하면 데이터베이스에 새로 추가되는 테이블에 대한 기본 위치가 변경된다. 데이터베이스 내 이미 존재하는 테이블에는 영향을 주지 않는다.

 

 

데이터베이스 사용

USE 문을 사용해 사용 데이터베이스를 변경할 수 있다.

USE database_name;
USE DEFAULT;

만약 기본 데이터베이스로 돌아가고 싶다면 데이터베이스 이름 대신 DEFAULT 키워드를 사용하면 된다.

 

 

 

참고 문서

https://wikidocs.net/23468

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-Create/Drop/Alter/UseDatabase

 

728x90