3.1 库级别操作

2016-04-16 13:28:34 3,194 0

查看所有库

;0: jdbc:hive2://localhost:10000> SHOW DATABASES;
 +----------------+--+
 | database_name  |
 +----------------+--+
 | default        |
+----------------+--+

默认情况下,hive安装完成之后,会有一个default库。


创建一个数据库testdb;

0: jdbc:hive2://localhost:10000> CREATE DATABASE IF NOT EXISTS testdb;
 No rows affected (0.153 seconds)
 0: jdbc:hive2://localhost:10000> show databases;
 +----------------+--+
 | database_name  |
 +----------------+--+
 | default        |
 | testdb         |
+----------------+--+

hive中的库的概念对应于在hive-site.xml中配置项hive.metastore.warehouse.dir指定目录的一个子目录。

例如刚才创建的testdb在hdfs中对应的目录为:

QQ截图20160416132457.png

目录的名称就是"库名.db"

在库中创建的表实际上对应的"库名.db "下的子目录

需要注意的是,在default库中创建的表会直接出现在/user/hive/warehouse目录下,因此/user/hive/warehouse下可能会同时存在表和库。如果是表的话,就表示的是default库中的表,如果是库的话,则目录以.db结尾。

分别在default库和testdb库下面创建表pokes。

0: jdbc:hive2://localhost:10000> USE default;
No rows affected (0.079 seconds)
0: jdbc:hive2://localhost:10000> CREATE TABLE pokes (foo INT, bar STRING);
No rows affected (0.177 seconds)
0: jdbc:hive2://localhost:10000> USE testdb;
No rows affected (0.045 seconds)
0: jdbc:hive2://localhost:10000> CREATE TABLE pokes (foo INT, bar STRING);
No rows affected (0.187 seconds)

查看目录的变化

QQ截图20160416132709.png

QQ截图20160416132742.png

删除库

DROP DATABASE testdb;

如果库中存在表的表,直接删除会出错,可以加上cascade强制删除

DROP DATABASE testdb CASCADE;