mysql内表和外表_Hive内表和外表的区别
本文以例子的形式介紹一下Hive內(nèi)表和外表的區(qū)別。例子共有4個(gè):不帶分區(qū)的內(nèi)表、帶分區(qū)的內(nèi)表、不帶分區(qū)的外表、帶分區(qū)的外表。
1 不帶分區(qū)的內(nèi)表
#創(chuàng)建表
create table innerTable(id int,name string) row format delimited fields terminated by ‘|’;(show tables發(fā)現(xiàn)沒有innerTable,只有innertable。不多說,記住了)
#從HDFS上加載數(shù)據(jù)
load data inpath ‘hdfs://master:9000/user/root/test/innerTable’ into table innertable; (查看HDFS上/user/root/test/innerTable,發(fā)現(xiàn)文件價(jià)innerTable還在,但是里面的文件已經(jīng)不在了。去哪了,去innertable表中了)
#刪除剛剛創(chuàng)建的表
drop table innertable;(到HDFS上看一下innertable文件夾及其中的文件都沒有了。去哪了,刪除表的時(shí)候刪除了)
2 帶分區(qū)的內(nèi)表
#創(chuàng)建表
create table inner_table_with_p(id int,name string) partitioned by (part_num int);(HDFS 出現(xiàn)文件夾inner_table_with_p,文件夾中為空)
#從HDFS加載數(shù)據(jù)
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出現(xiàn)子文件夾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出現(xiàn)子文件夾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出現(xiàn)子文件夾part_num=3,innerTable中part3消失);
#刪除分區(qū)
alter table inner_table_with_p drop partition(part_num=1);(part_num=1對(duì)應(yīng)分區(qū)文件夾本刪除)
#刪除表
drop table inner_table_with_p;(HDFS上inner_table_with_p文件夾被刪除)
3 不帶分區(qū)的外表
創(chuàng)建表
create external table outer_table(id int,name string) row format delimited fields terminated by ‘|’;? ? ? (hive倉(cāng)儲(chǔ)目錄中出現(xiàn)outer_table)
加載數(shù)據(jù)
load data inpath ‘/user/root/test/outerTable/outer’ into table outer_table;(outer_table中出現(xiàn)子文件outer,outerTable中outer消失)
刪除表
drop table outer_table;? ? (outer_table及子文件outer依然存在,因?yàn)檫@是外表)
4 帶分區(qū)的外表
創(chuàng)建表
create external table outer_table_with_p(id int,name string) partitioned by (part_num int) row format delimited fields terminated by ‘|’; (hive倉(cāng)儲(chǔ)目錄中出現(xiàn)outer_table_with_p)
加載數(shù)據(jù)
load data inpath ‘/user/root/test/outerTable/part1′ into table outer_table_with_p partiton(part_num=1);? (outer_table_with_p中出現(xiàn)子文件夾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中出現(xiàn)子文件夾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中出現(xiàn)子文件夾part_num=3)
刪除分區(qū)
alter table outer_table_with_p drop partition(part_num=1);(HDFS上分區(qū)文件依舊存在)
刪除表
drop table outer_table_with_p;(HDFS上對(duì)應(yīng)數(shù)據(jù)依舊存在)
總結(jié):
1 刪除內(nèi)表時(shí),內(nèi)表數(shù)據(jù)會(huì)一并刪除;
2 刪除外表時(shí),外表數(shù)據(jù)依舊存在。
推薦閱讀:
總結(jié)
以上是生活随笔為你收集整理的mysql内表和外表_Hive内表和外表的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何验证python的下载安装_如何下载
- 下一篇: iPhone 13可以录入几个面容ID