hive에서 테이블 생성시, 테이블 정보가 저장되는 HDFS 디렉토리는 hive-site.xml에서 정의된 hive.metastore.warehouse.dir로 정의된 디렉토리이다.
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
flynn 이라는 하이브 데이터베이스를 생성한다.
hive>CREATE DATABASE flynn;
하이브 데이터베이스가 없을 때만 하이브 데이터베이스를 생성한다.
hive>CREATE DATABASE IF NOT EXISTS flynn;
생성한 데이터베이스를 보려면 다음과 같이 사용한다.
hive>SHOW DATABASES;
flynn
hive>SHOW DATABASES LIKE 'fl.*';
OK
flynn
기본 데이터 베이스에 대한 정보를 확인하려면 DESCRIBE DATABASE를 확인한다. hive-site.xml 에서 정의된 내용과 동일하다.
hive> DESCRIBE DATABASE default;
OK
default Default Hive database hdfs://story-hadoop/user/hive/warehouse public ROLE
flynn 하이브 데이터베이스를 생성하면, 다음과 같이 hdfs 명령어를 이용하여 정상적으로 하이브 DB를 만들었는지 확인할 수 있다.
$ hdfs dfs -ls /user/hive/warehouse
/user/hive/warehouse/flynn.db
flynn 데이터베이스를 삭제하려면 drop database 명령어를 사용한다.
hive> DROP DATABASE flynn;
$ hdfs dfs -ls /user/hive/warehouse
파일 없음
참고로, 아래처럼 특정 hdfs 위치, 주석, 속성을 넣어 만들 수도 있지만, hdfs 위치는 잘 정의할 필요가 있다.
$ CREATE DATABASE IF NOT EXISTS flynn COMMENT 'demo' LOCATION '/user/hive/warehouse1/' WITH DBPROPERTIES ('creator'='flynn');
hive> DESC DATABASE flynn;
OK
flynn demo hdfs://story-hadoop/user/hive/warehouse1 deploy USER
하이브의 데이터베이스와 테이블은 디렉토리처럼 테이블이 존재하면, 데이터베이스를 삭제할 수 없다. 먼저 테이블을 모두 삭제하고, 데이터베이스를 삭제해야 한다.
이런 불편함을 줄이기 위해 CASCADE를 사용할 수 있다. CASCADE를 사용하면 rm -rf와 같은 효과를 제공한다.
DROP DATABASE IF EXISTS flynn CASCADE;
ALTER DATABASE 문은 테이블 속성과 테이블의 권한(role, 하이브 0.13.0 이후)에만 적용할 수 있는 한계가 있다. 그 이상 하려면 삭제하고 다시 만들어야 한다.
'hadoop' 카테고리의 다른 글
brew를 이용해서 hadoop, hive 설치하기 (0) | 2016.04.19 |
---|---|
[hadoop] mkdir -p (0) | 2016.04.18 |
[hive] hive cli history (0) | 2016.04.17 |
[hive] HiveServer2 (0) | 2016.04.16 |
install hadoop 1.2.1 and hive 1.0.1 (0) | 2016.03.29 |