hive預設建表方式就是建立內部表。
建外部表語句:
create external table table_exter(
id int,
name string,
age int,
tel string)
row format delimited fields terminated by '|'
stored as textfile
location '/user/hive/warehouse/gbd_dm_qydb_safe.db/test';
相應的txt檔案:
1|xiaoming|
24|shanghai
使用load命令裝載進表:load data local inpath 'table_exter.txt' overwrite into table table_exter;
查詢一下內容:
可以看到建立外部表需要
嘗試一下truncate操作:
發現報了個錯,這是因為外部表是不能truncate的,究其原因是因為外部表並不是由它自己管理的。
再嘗試一下drop操作:
按理來說,drop之後相應的hdfs上資料倉儲下的檔案也會刪除,但其實不然:
這張圖是drop前和drop後的,可以看到沒有任何變化。外部表只是刪除了元資料,並沒有真正刪除表內的資料。
結論:hive 建立內部表時,會將資料移動到資料倉儲指向的路徑;若建立外部表,僅記錄資料所在的路徑,不對資料的位置做任何改變,相當於只是指向hdfs上某個地方資料的乙個表。
在刪除表的時候,內部表的元資料和資料會被一起刪除,而外部表只刪除元資料,不刪除資料。
8 hadoop學習筆記02
一 hdfs架構 主從結構 1 namenode nn 名稱節點 a 檔案的名稱 b 檔案的目錄結構 c 檔案的屬性 許可權 副本數 建立時間 d 乙個檔案被對於切割哪些資料塊 包含副本數的塊 對應分布在哪些datanode blockmap塊對映 nn是不會持久這種對映關係的。是通過集群的啟動和執...
hive內部表和外部表的區別 內部表和外部表
內部表 create table if not exists table name刪除表時,元資料與資料都會被刪除 外部表 create external table if not exists table name location hdfs path刪除外部表只刪除metastore的元資料,不...
hive外部表和內部表
1.內部表指hive建立並通過load data inpath進資料庫的表,這種表可以理解為資料和表結構都儲存在一起的資料表。當你通過drop table table name 刪除元資料中表結構的同時,表中的資料也同樣會從hdfs中被刪除。sql view plain copy create ta...