hive內(nèi)部表與外部表區(qū)別詳細(xì)介紹

問題導(dǎo)讀:
1.創(chuàng)建內(nèi)部表與外部表的區(qū)別是什么塘淑?
2.external關(guān)鍵字的作用是什么?
3.外部表與內(nèi)部表的區(qū)別是什么蚂斤?
4.刪除表的時(shí)候存捺,內(nèi)部表與外部表有什么區(qū)別?
5.load data local inpath '/home/wyp/data/wyp.txt' into table wyp;的過程是什么樣子的曙蒸?
6.磁盤捌治,hdfs,hive表他們之間的過程是什么樣子的?

好了纽窟,進(jìn)入正題肖油。今天我們要探討的話題是Hive的里面的表與外部表兩個(gè)概念,以及如何在Hive里面創(chuàng)建表和外部表臂港,它們之間有什么區(qū)別等話題森枪。在本博客的 讓你徹底明白hive數(shù)據(jù)存儲各種模式文章里面我們談到了Hive的數(shù)據(jù)存儲模式,里面簡單的說到Hive中表以及外部表的簡單概念审孽,相信很多讀者對這些概念還不是很了解县袱,今天就給大家科普一下,希望對大家有所幫助瓷胧。
  相信很多用戶都用過關(guān)系型數(shù)據(jù)庫显拳,我們可以在關(guān)系型數(shù)據(jù)庫里面創(chuàng)建表(create table),這里要討論的表和關(guān)系型數(shù)據(jù)庫中的表在概念上很類似搓萧。我們可以用下面的語句在Hive里面創(chuàng)建一個(gè)表:

  1. hive> create table wyp(id int,

  2. name string,

  3. age int,

  4. tele string)

  5. ROW FORMAT DELIMITED

  6. FIELDS TERMINATED BY '\t'

  7. STORED AS TEXTFILE;

  8. OK

  9. Time taken: 0.759 seconds

復(fù)制代碼

這樣我們就在Hive里面創(chuàng)建了一張普通的表杂数,現(xiàn)在我們給這個(gè)表導(dǎo)入數(shù)據(jù):

  1. hive> load data local inpath '/home/wyp/data/wyp.txt' into table wyp;

  2. Copying data from file:/home/wyp/data/wyp.txt

  3. Copying file: file:/home/hdfs/wyp.txt

  4. Loading data to table default.wyp

  5. Table default.wyp stats: [num_partitions: 0, num_files: 1,

  6. num_rows: 0, total_size: 67, raw_data_size: 0]

  7. OK

  8. Time taken: 3.289 seconds

  9. hive> select * from wyp;

  10. OK

  11. 1 wyp 25 13188888888888

  12. 2 test 30 13888888888888

  13. 3 zs 34 899314121

  14. Time taken: 0.41 seconds, Fetched: 3 row(s)

復(fù)制代碼

注意:/home/wyp/data/路徑是Linux本地文件系統(tǒng)路徑;而/home/hdfs/是HDFS文件系統(tǒng)上面的路徑瘸洛!從上面的輸出我們可以看到數(shù)據(jù)是先從本地的/home/wyp/data/文件夾下復(fù)制到HDFS上的/home/hdfs/wyp.txt(這個(gè)是Hive中的配置導(dǎo)致的)文件中揍移!最后Hive將從HDFS上把數(shù)據(jù)移動到wyp表中!移到表中的數(shù)據(jù)到底存放在HDFS的什么地方反肋?其實(shí)在Hive的${HIVE_HOME}/conf/hive-site.xml配置文件的hive.metastore.warehouse.dir屬性指向的就是Hive表數(shù)據(jù)存放的路徑(在我的店電腦里面配置是/user/hive/warehouse)那伐,而Hive每創(chuàng)建一個(gè)表都會在hive.metastore.warehouse.dir指向的目錄下以表名創(chuàng)建一個(gè)文件夾,所有屬于這個(gè)表的數(shù)據(jù)都存放在這個(gè)文件夾里面。所以罕邀,剛剛導(dǎo)入到wyp表的數(shù)據(jù)都存放在/user/hive/warehouse/wyp/文件夾中畅形,我們可以去看看:

  1. hive> dfs -ls /user/hive/warehouse/wyp ;

  2. Found 1 items

  3. -rw-r--r-- 3 wyp supergroup 67 2014-01-14 22:23 /user/hive/warehouse/wyp/wyp.txt

復(fù)制代碼

看到?jīng)],上面的命令就是顯示HDFS上的/user/hive/warehouse/wyp中的所有內(nèi)容诉探。如果需要刪除wyp表日熬,可以用下面的命令:

  1. hive> drop table wyp;

  2. Moved: 'hdfs://mycluster/user/hive/warehouse/wyp' to

  3. trash at: hdfs://mycluster/user/hdfs/.Trash/Current

  4. OK

  5. Time taken: 2.503 seconds

復(fù)制代碼

從上面的輸出Moved: ‘hdfs://mycluster/user/hive/warehouse/wyp’ to trash at: hdfs://mycluster/user/hdfs/.Trash/Current我們可以得知,原來屬于wyp表的數(shù)據(jù)被移到hdfs://mycluster/user/hdfs/.Trash/Current文件夾中(如果你的Hadoop沒有取用垃圾箱機(jī)制肾胯,那么drop table wyp命令將會把屬于wyp表的所有數(shù)據(jù)全部刪除J),其實(shí)就是刪掉了屬于wyp表的數(shù)據(jù)敬肚。記住這些毕荐,因?yàn)檫@些和外部表有很大的不同。同時(shí)艳馒,屬于表wyp的元數(shù)據(jù)也全部刪除了憎亚!
我們再來創(chuàng)建一個(gè)外部表:

  1. hive> create external table exter_table(

  2. id int,

  3. name string,

  4. age int,

  5. tel string)

  6. location '/home/wyp/external';

  7. OK

  8. Time taken: 0.098 seconds

復(fù)制代碼

仔細(xì)觀察一下創(chuàng)建表和外部表的區(qū)別,仔細(xì)的同學(xué)們一個(gè)會發(fā)現(xiàn)創(chuàng)建外部表多了external關(guān)鍵字說明以及l(fā)ocation ‘/home/wyp/external’鹰溜。是的虽填,你說對了!如果你需要創(chuàng)建外部表曹动,需要在創(chuàng)建表的時(shí)候加上external關(guān)鍵字,同時(shí)指定外部表存放數(shù)據(jù)的路徑(當(dāng)然牲览,你也可以不指定外部表的存放路徑墓陈,這樣Hive將在HDFS上的/user/hive/warehouse/文件夾下以外部表的表名創(chuàng)建一個(gè)文件夾,并將屬于這個(gè)表的數(shù)據(jù)存放在這里):

  1. hive> load data local inpath '/home/wyp/data/wyp.txt' into table exter_table;

  2. Copying data from file:/home/wyp/data/wyp.txt

  3. Copying file: file:/home/hdfs/wyp.txt

  4. Loading data to table default.exter_table

  5. Table default.exter_table stats: [num_partitions: 0, num_files:

  6. 1, num_rows: 0, total_size: 67, raw_data_size: 0]

  7. OK

  8. Time taken: 0.456 seconds

復(fù)制代碼

和上面的導(dǎo)入數(shù)據(jù)到表一樣第献,將本地的數(shù)據(jù)導(dǎo)入到外部表贡必,數(shù)據(jù)也是從本地文件系統(tǒng)復(fù)制到HDFS中/home/hdfs/wyp.txt文件中,但是庸毫,最后數(shù)據(jù)不是移動到外部表的/user/hive/warehouse/exter_table文件夾中(除非你創(chuàng)建表的時(shí)候沒有指定數(shù)據(jù)的存放路徑)仔拟!大家可以去HDFS上看看!對于外部表飒赃,數(shù)據(jù)是被移動到創(chuàng)建表時(shí)指定的目錄(本例是存放在/home/wyp/external文件夾中)利花!如果你要刪除外部表,看看下面的操作:

  1. hive> drop table exter_table;

  2. OK

  3. Time taken: 0.093 seconds

復(fù)制代碼

和上面刪除Hive的表對比可以發(fā)現(xiàn)载佳,沒有輸出將數(shù)據(jù)從一個(gè)地方移到任一個(gè)地方炒事!那是不是刪除外部表的的時(shí)候數(shù)據(jù)直接被刪除掉呢?答案不是這樣的:

  1. hive> dfs -ls /home/wyp/external;

  2. Found 1 items

  3. -rw-r--r-- 3 wyp supergroup 67 2014-01-14 23:21 /home/wyp/external/wyp.txt

復(fù)制代碼

你會發(fā)現(xiàn)刪除外部表的時(shí)候蔫慧,數(shù)據(jù)并沒有被刪除挠乳,這是和刪除表的數(shù)據(jù)完全不一樣的!

最后歸納一下Hive中表與外部表的區(qū)別:
1、在導(dǎo)入數(shù)據(jù)到外部表睡扬,數(shù)據(jù)并沒有移動到自己的數(shù)據(jù)倉庫目錄下盟蚣,也就是說外部表中的數(shù)據(jù)并不是由它自己來管理的!而表則不一樣卖怜;
2刁俭、在刪除表的時(shí)候,Hive將會把屬于表的元數(shù)據(jù)和數(shù)據(jù)全部刪掉韧涨;而刪除外部表的時(shí)候牍戚,Hive僅僅刪除外部表的元數(shù)據(jù),數(shù)據(jù)是不會刪除的虑粥!
那么如孝,應(yīng)該如何選擇使用哪種表呢?在大多數(shù)情況沒有太多的區(qū)別娩贷,因此選擇只是個(gè)人喜好的問題第晰。但是作為一個(gè)經(jīng)驗(yàn),如果所有處理都需要由Hive完成彬祖,那么你應(yīng)該創(chuàng)建表茁瘦,否則使用外部表!

轉(zhuǎn):https://blog.csdn.net/bbbeoy/article/details/62233125

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末储笑,一起剝皮案震驚了整個(gè)濱河市甜熔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌突倍,老刑警劉巖腔稀,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異羽历,居然都是意外死亡焊虏,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門秕磷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來诵闭,“玉大人,你說我怎么就攤上這事澎嚣∈枘颍” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵币叹,是天一觀的道長润歉。 經(jīng)常有香客問我,道長颈抚,這世上最難降的妖魔是什么踩衩? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任嚼鹉,我火速辦了婚禮,結(jié)果婚禮上驱富,老公的妹妹穿的比我還像新娘锚赤。我一直安慰自己,他們只是感情好褐鸥,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布线脚。 她就那樣靜靜地躺著,像睡著了一般叫榕。 火紅的嫁衣襯著肌膚如雪浑侥。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天晰绎,我揣著相機(jī)與錄音寓落,去河邊找鬼。 笑死荞下,一個(gè)胖子當(dāng)著我的面吹牛伶选,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播尖昏,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼仰税,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了抽诉?” 一聲冷哼從身側(cè)響起陨簇,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎掸鹅,沒想到半個(gè)月后塞帐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡巍沙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了荷鼠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片句携。...
    茶點(diǎn)故事閱讀 39,932評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖允乐,靈堂內(nèi)的尸體忽然破棺而出矮嫉,到底是詐尸還是另有隱情,我是刑警寧澤牍疏,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布蠢笋,位于F島的核電站,受9級特大地震影響鳞陨,放射性物質(zhì)發(fā)生泄漏昨寞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望援岩。 院中可真熱鬧歼狼,春花似錦、人聲如沸享怀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽添瓷。三九已至梅屉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鳞贷,已是汗流浹背坯汤。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留悄晃,地道東北人玫霎。 一個(gè)月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像妈橄,于是被迫代替她去往敵國和親庶近。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容