Hive中建立,操作,刪除資料庫
阿新 • • 發佈:2018-12-04
目錄
資料庫的建立:
操作如下:
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)