Hive如何創(chuàng)建內(nèi)部表

這篇文章主要介紹Hive如何創(chuàng)建內(nèi)部表 ,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、重慶小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了浪卡子免費建站歡迎大家使用!

之前說的是外部表,當(dāng)把EXTERNAL關(guān)鍵字去掉的時候就是內(nèi)部表了。為什么叫內(nèi)部表,因為這種表,Hive會(或多或少地)控制著數(shù)據(jù)的生命周期。

如果你熟悉Hive那你一定知道,Hive默認(rèn)情況下會將這些表的數(shù)據(jù)存儲在由配置項 hive.metastore.warehouse.dir (例如,/user/hive/warehouse)所定義的目錄的子目錄下。

當(dāng)我們刪除一個內(nèi)部表時,Hive也會刪除這個表中數(shù)據(jù)。相應(yīng)的,內(nèi)部表不方便和其他工作共享數(shù)據(jù)。例如,有一份數(shù)據(jù)正在被其他程序使用,同時我們還想使用Hive在這份數(shù)據(jù)上執(zhí)行一些查詢,可是并沒有給予Hive對數(shù)據(jù)的所有權(quán),我們可以創(chuàng)建一個外部表指向這份數(shù)據(jù),而并不需要對其具有所有權(quán)。那內(nèi)部表如果想要這份數(shù)據(jù)怎么辦呢,用LOAD。

LOAD DATA LOCAL INPATH /data/ OVERWRITE INTO TABLE ods_login PARTITION (dt='2020-03-01');
  • OVERWRITE:覆蓋

如果用戶指定了 OVERWRITE關(guān)鍵字,那么目標(biāo)文件夾中之前存在的數(shù)據(jù)將會被先刪 除掉。如果沒有這個關(guān)鍵字,僅僅會把新增的文件增加到目標(biāo)文件夾中而不會刪除之 前的數(shù)據(jù)。如果目標(biāo)文件夾中已經(jīng)存在和裝載的文件同名的文件,那么舊的同 名文件將會被覆蓋重寫。

  • PARTITION:導(dǎo)入分區(qū)

如果分區(qū)目錄不存在的話,這個命令會先創(chuàng)建分區(qū)目錄,然后再將數(shù)據(jù)拷貝到該目錄下。如果目標(biāo)表是非分區(qū)表,那么語句中應(yīng)該省略PARTITION子句。

通常情況下指定的路徑應(yīng)該是一個目錄,而不是單個獨立的文件。Hive會將所有文件 都拷貝到這個目錄中。這使得用戶將更方便地組織數(shù)據(jù)到多文件中,同時,在不修改 Hive腳本的前提下修改文件命名規(guī)則。不管怎么樣,文件都會被拷貝到目標(biāo)表路徑下 而且文件名會保持不變。

如果使用了 LOCAL這個關(guān)鍵字,那么這個路徑應(yīng)該為本地文件系統(tǒng)路徑。數(shù)據(jù)將會被 拷貝到目標(biāo)位置。如果省略掉LOCAL關(guān)鍵字,那么這個路徑應(yīng)該是HDFS的路徑。這種情況下,數(shù)據(jù)是從這個路徑轉(zhuǎn)移到目標(biāo)位置的。

之前提到過Hive的schema on read,這種模式的優(yōu)勢是load data 非常迅速,因為它不需要讀取數(shù)據(jù)進(jìn)行解析,僅僅進(jìn)行文件的復(fù)制或者移動。MySQL的寫時模式的優(yōu)勢是提升了查詢性能,因為預(yù)先解析之后可以對列建立索引,并壓縮,但這樣也會花費要多的加載時間。

需要注意的是:

  • 如果加載的文件在HDFS上,此文件會被移動到表路徑中;

  • 如果加載的文件在本地,此文件會被復(fù)制到HDFS的表路徑中;

  • 會為每一個待導(dǎo)入的文件,啟動一個MR任務(wù)進(jìn)行導(dǎo)入。

如同內(nèi)部表一樣,外部表在創(chuàng)建表時也需要指定數(shù)據(jù)表所在的數(shù)據(jù)文件的路徑——以下簡稱為表路徑。如果沒有指定,Hive會自動分配一個。自動分配的目錄是hive主目錄下的以表名命名目錄;

如果創(chuàng)建外部表時,指定表的數(shù)據(jù)存儲目錄。Hive會將此目錄下已有的所有文件作為表的數(shù)據(jù)文件,在查詢時進(jìn)行解析。此時,Hive仍會在hive的目錄下創(chuàng)建以表名命名的目錄,但目錄內(nèi)的內(nèi)容為空。


以上是“Hive如何創(chuàng)建內(nèi)部表 ”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

分享文章:Hive如何創(chuàng)建內(nèi)部表
當(dāng)前路徑:http://muchs.cn/article46/gecohg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計公司、外貿(mào)建站、手機網(wǎng)站建設(shè)、移動網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作、全網(wǎng)營銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司