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中对应的目录为:
目录的名称就是"库名.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)
查看目录的变化
删除库
DROP DATABASE testdb;
如果库中存在表的表,直接删除会出错,可以加上cascade强制删除
DROP DATABASE testdb CASCADE;