[hive] database 만들기

hadoop 2016. 4. 18. 13:47



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
Posted by '김용환'
,