Hive內部表和外部表

2021-09-02 17:47:26 字數 2380 閱讀 9964

總結一下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還是不指定location

hive外部表和內部表

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...