mysql內錶和外表區別 Hive內錶和外表的區別

2021-10-19 18:25:56 字數 2696 閱讀 3285

本文以例子的形式介紹一下hive內錶和外表的區別。例子共有4個:不帶分割槽的內錶、帶分割槽的內錶、不帶分割槽的外表、帶分割槽的外表。

1 不帶分割槽的內錶

#建立表

create table innertable(id int,name string) row format delimited fields terminated by '|';(show tables發現沒有innertable,只有innertable。不多說,記住了)

#從hdfs上載入資料

load data inpath 'hdfs://master:9000/user/root/test/innertable' into table innertable; (檢視hdfs上/user/root/test/innertable,發現檔案價innertable還在,但是裡面的檔案已經不在了。去哪了,去innertable表中了)

#刪除剛剛建立的表

drop table innertable;(到hdfs上看一下innertable資料夾及其中的檔案都沒有了。去哪了,刪除表的時候刪除了)

2 帶分割槽的內錶

#建立表

create table inner_table_with_p(id int,name string) partitioned by (part_num int);(hdfs 出現資料夾inner_table_with_p,資料夾中為空)

#從hdfs載入資料

load data inpath 'hdfs://master:9000/user/root/test/innertable/part1' into table inner_table_with_p partition(part_num=1)(資料夾inner_table_with_p出現子資料夾part_num=1,innertable中part1消失);

load data inpath 'hdfs://master:9000/user/root/test/innertable/part2' into table inner_table_with_p partition(part_num=2)(資料夾inner_table_with_p出現子資料夾part_num=2,innertable中part2消失);

load data inpath 'hdfs://master:9000/user/root/test/innertable/part3' into table inner_table_with_p partition(part_num=3)(資料夾inner_table_with_p出現子資料夾part_num=3,innertable中part3消失);

#刪除分割槽

alter table inner_table_with_p drop partition(part_num=1);(part_num=1對應分割槽資料夾本刪除)

#刪除表

drop table inner_table_with_p;(hdfs上inner_table_with_p資料夾被刪除)

3 不帶分割槽的外表

建立表create external table outer_table(id int,name string) row format delimited fields terminated by '|';      (hive倉儲目錄**現outer_table)

載入資料

load data inpath '/user/root/test/outertable/outer' into table outer_table;(outer_table**現子檔案outer,outertable中outer消失)

刪除表drop table outer_table;    (outer_table及子檔案outer依然存在,因為這是外表)

4 帶分割槽的外表

建立表create external table outer_table_with_p(id int,name string) partitioned by (part_num int) row format delimited fields terminated by '|'; (hive倉儲目錄**現outer_table_with_p)

載入資料

load data inpath '/user/root/test/outertable/part1' into table outer_table_with_p partiton(part_num=1);  (outer_table_with_p**現子資料夾part_num=1)

load data inpath '/user/root/test/outertable/part2' into table outer_table_with_p partition(part_num=2);(outer_table_with_p**現子資料夾part_num=2)

load data inpath '/user/root/test/outertable/part3' into table outer_table_with_p partition(part_num=3);(outer_table_with_p**現子資料夾part_num=3)

刪除分割槽

alter table outer_table_with_p drop partition(part_num=1);(hdfs上分割槽檔案依舊存在)

刪除表drop table outer_table_with_p;(hdfs上對應資料依舊存在)

總結:1 刪除內錶時,內錶資料會一併刪除;

2 刪除外表時,外表資料依舊存在。

推薦閱讀:

mysql內錶和外表 內錶查詢用到外表

在 csdn 上看到的乙個例子,很多記錄中以某個欄位為中心最前面的兩條資料 給個例子參考 查詢每門課程的前2名成績 create table studentgrade stuid char 4 學號 subid int,課程號 grade int,成績 primary key stuid,subid...

Hive 內錶和外表的區別

原文 1.內部表 create table zz name string age string location input table data 注 hive預設建立的是內部表 此時,會在hdfs上新建乙個zz表的資料存放地 load data inpath input data into tab...

Hive建立內錶和外表的區別

內部表也稱為管理表或臨時表,hive控制著整個表的生命週期,預設存放目錄為 user hive warehouse,當刪除一張表的時候表中的資料也會相應的刪除。缺點 在實際開發中,內部表不方便和其他工作共享資料,hive在設計之初就不允許共享管理表中的資料,那應該如何來實現呢?hive提供了外部表。...