總結一下hive的內部表和外部表以及兩者的區別。
平時建立的普通表為內部表
create
table
`test_internal`
(id string comment
'id'
, name string comment
'名字'
)comment
'測試內部表'
row format delimited fields
terminated
by','
;
帶external關鍵字的為外部表
create external table `test_external` (
id string comment 'id',
name string comment '名字'
)comment '測試外部表'
row format delimited fields terminated by ',' ;
僅從建表語句上看,內部表和外部表的區別為是否帶有external關鍵字。
網上很多部落格寫的外部表建表語句中都帶有location關鍵字,我這裡單獨分開來寫。示例:
data.txt
002,李四
003,王五
hadoop fs -mkdir -p /tmp/dkl/internal_location
hadoop fs -mkdir -p /tmp/dkl/external_location
hadoop fs -put data.txt /tmp/dkl/internal_location
hadoop fs -put data.txt /tmp/dkl/external_location
2.2.1 內部表create
table test_internal_location (
id string comment
'id'
, name string comment
'名字'
)comment
'測試內部表location'
row format delimited fields
terminated
by','
location '/tmp/dkl/internal_location'
;
2.2.2 外部表create external table test_external_location (
id string comment
'id'
, name string comment
'名字'
)comment
'測試外部表location'
row format delimited fields
terminated
by','
location '/tmp/dkl/external_location'
;
這樣查詢的時候就可以把data.txt裡的資料查出來了,這時再往對應的hdfs路徑下put資料,hive表也會對應增加。
說明:hdfs 資料夾及對應下的資料和建表語句沒有先後順序,建表在前和在後都可以把資料載入出來,如果先建表的話,對應的資料夾如果不存在,則會自動建立資料夾。內部表和外部表的區別主要體現在刪除表,將上面建立的四個表都刪掉。
drop
table test_internal;
drop
table test_external;
drop
table test_internal_location;
drop
table test_external_location;
看一下對應的hdfs路徑有啥變化
hadoop命令
hadoop fs -ls /tmp/dkl
發現外部表test_external資料夾和external_location資料夾都存在,而內部表的兩個資料夾都沒了,這也就是內部表和外部表的區別:
內部表刪除表時,對應的hdfs的路徑下的檔案會刪掉;外部表刪除表時,對應的hdfs的路徑下的檔案則不會刪掉,無論是建表是指定location還是不指定locationhive外部表和內部表
1.內部表指hive建立並通過load data inpath進資料庫的表,這種表可以理解為資料和表結構都儲存在一起的資料表。當你通過drop table table name 刪除元資料中表結構的同時,表中的資料也同樣會從hdfs中被刪除。sql view plain copy create ta...
Hive 外部表和內部表
外部表說明 外部表因為是指定其他的hdfs路徑的資料載入到表當中來,所以hive表會認為自己不完全獨佔這份資料,所以刪除hive表的時候,資料仍然存放在hdfs當中,不會刪掉 管理表和外部表的使用場景 操作案例 分別建立老師與學生表外部表,並向表中載入資料 建立老師表 create external...
Hive 內部表和外部表
針對於hive 的 建庫建表操作建庫 內部表 也叫管理表和臨時表 外部表表的操作 建庫 建立名為 test 的資料庫 僅當不存在是才建立 新增備註資訊 test database create database if not exists test comment this is a databas...