關於庫的操作
-
創建庫
create database if not exists 數據庫名;
創建的數據庫存放在hive默認的倉庫裏面(該倉庫的位置在當時安裝hive的時候指定的位置,在/hive/conf目錄下的hive-site.xml裏查看)
-
查看庫
show current_database(); -
刪除庫
# 如果是空的數據庫,直接可以刪除
drop database student1029;
#如果數據庫中有表,想要直接刪除只能加關鍵字【cascade】暴力刪除
drop database student1029 cascade;
4. 切換庫
use 數據庫名稱;
關於外部表和內部表的操作
1. 創建外部表【一般HDFS上先有公用數據,再創建外部表進行連接】external
create external table mystu(id int,name string,gender string,age int,department string) row format delimited fields terminated by “,” lines terminated by “\n” location “/student1029/input”;
【location】:跟的是HDFS目錄,而不是具體的文件。
外部表只是連接HDFS目錄中的文件,在hive默認的倉庫裏面是沒有該文件的。
desc formatted mystu;
查看mystu表的元數據信息,可以看到位置是在HDFS目錄裏。
2. 創建內部表【一般先創建表,不指定路徑,再導入數據】
create table innerstu(id int,name string,gender string,age int,department string) row format delimited fields terminated by “,” lines terminated by “\n”;
創建的內部表默認是存放在hive的倉庫裏面。
創建出來的表是一張空表,沒有數據的。
導入數據
load data local inpath “/home/hadoopUser/students.txt” into table innerstu;
這裏導入數據的方法選擇的是從本地linux導入,上傳students.txt文件到innerstu表目錄下。
導入數據後,在HDFS上的hive倉庫該表的目錄下會存在該文件。
總結
-
外部表的創建在hive默認的倉庫路徑下是沒有該表信息,只是連接HDFS上的數據文件。
內部表的創建在hive默認的倉庫路徑下是存在該表信息,且會在該表目錄下存放數據文件。 -
外部表連接的數據文件依然存放在該文件的HDFS目錄下。
內部表的數據文件存放在hive倉庫下該表的目錄下。 -
刪除外部表,不會刪除數據文件。
刪除內部表,會刪除數據文件。 -
創建外部表最好指定locaiton。
創建內部表不用指定location。 -
外部表連接的HDFS目錄下若是新增了數據文件,則會同步到外部表。
內部表需要導入新增的數據文件,纔會同步到內部表。