1. 程式人生 > >Hive中建立,操作,刪除資料庫

Hive中建立,操作,刪除資料庫

目錄

資料庫的建立:

資料庫的查詢,切換,修改:

 資料庫的刪除:


資料庫的建立:

操作如下:

0: jdbc:hive2://hadoop108:10000> show databases;
OK
+----------------+--+
| database_name  |
+----------------+--+
| default        |
+----------------+--+
1 row selected (2.047 seconds)
0: jdbc:hive2://hadoop108:10000> show tables;
OK
+-----------+--+
| tab_name  |
+-----------+--+
+-----------+--+
No rows selected (0.101 seconds)
0: jdbc:hive2://hadoop108:10000> create database db_hive;
OK
No rows affected (0.417 seconds)
0: jdbc:hive2://hadoop108:10000> show databases;
OK
+----------------+--+
| database_name  |
+----------------+--+
| db_hive        |
| default        |
+----------------+--+
2 rows selected (0.045 seconds)

經過上面的操作,也即建立了資料庫之後,該資料庫預設儲存的位置是:

/user/hive/warehouse/db_hive.db

與此同時,建立user目錄的時候,還會在根目錄下建立

/tmp/

在建立資料庫的時候,還可以指定資料庫在HDFS上的位置,建立的語法如下:

0: jdbc:hive2://hadoop108:10000> create database db_hive2 location '/db_hive2.db';
OK

此時,在HDFS上也會多出一個資料夾:

/db_hive2.db

對於我們建立的資料庫,關於資料庫的相關的資訊儲存在metestore中,如下圖:

可見,每一個數據庫在建立的時候,都會有自己對應的location,如果在建立資料庫的時候沒有指定該資料庫的location的話,那麼該資料庫的location將會是預設的位置: /user/hive/warehouse 目錄下。

資料庫的查詢,切換,修改:

0: jdbc:hive2://hadoop108:10000> desc database db_hive;
OK
+----------+----------+-------------------------------------------------------+-------------+-------------+-------------+--+
| db_name  | comment  |                       location                        | owner_name  | owner_type  | parameters  |
+----------+----------+-------------------------------------------------------+-------------+-------------+-------------+--+
| db_hive  |          | hdfs://hadoop108:9000/user/hive/warehouse/db_hive.db  | isea        | USER        |             |
+----------+----------+-------------------------------------------------------+-------------+-------------+-------------+--+


0: jdbc:hive2://hadoop108:10000> desc database extended db_hive;
OK
+----------+----------+-------------------------------------------------------+-------------+-------------+-------------+--+
| db_name  | comment  |                       location                        | owner_name  | owner_type  | parameters  |
+----------+----------+-------------------------------------------------------+-------------+-------------+-------------+--+
| db_hive  |          | hdfs://hadoop108:9000/user/hive/warehouse/db_hive.db  | isea        | USER        |             |
+----------+----------+-------------------------------------------------------+-------------+-------------+-------------+--+

0: jdbc:hive2://hadoop108:10000> use db_hive;

使用者可以使用ALTER DATABASE命令為某個資料庫的DBPROPERTIES設定鍵-值對屬性值,來描述這個資料庫的屬性資訊。資料庫的其他元資料資訊都是不可更改的,包括資料庫名和資料庫所在的目錄位置。

0: jdbc:hive2://hadoop108:10000> alter database db_hive set dbproperties('createtime'='12');
OK
No rows affected (0.14 seconds)


0: jdbc:hive2://hadoop108:10000> desc database extended db_hive;
OK
+----------+----------+-------------------------------------------------------+-------------+-------------+------------------+--+
| db_name  | comment  |                       location                        | owner_name  | owner_type  |    parameters    |
+----------+----------+-------------------------------------------------------+-------------+-------------+------------------+--+
| db_hive  |          | hdfs://hadoop108:9000/user/hive/warehouse/db_hive.db  | isea        | USER        | {createtime=12}  |
+----------+----------+-------------------------------------------------------+-------------+-------------+------------------+--+

 資料庫的刪除:

0: jdbc:hive2://hadoop108:10000> drop database db_hive2;
OK
No rows affected (0.532 seconds)
0: jdbc:hive2://hadoop108:10000> show databases;
OK
+----------------+--+
| database_name  |
+----------------+--+
| db_hive        |
| default        |
+----------------+--+
2 rows selected (0.038 seconds)

此時HDFS上的目錄和db_hive2對應的資料庫檔案也被刪除:

/db_hive2.db 也被刪除

如果資料庫中有表,不為空,如果是這種情況的話,使用上面的語句是無法刪除的,此時可以使用下面的語句刪除:

0: jdbc:hive2://hadoop108:10000> drop database db_hive2 cascade;
OK
No rows affected (0.635 seconds)