您好,登錄后才能下訂單哦!
這篇文章主要介紹Hive如何創(chuàng)建內(nèi)部表 ,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
之前說的是外部表,當把EXTERNAL關(guān)鍵字去掉的時候就是內(nèi)部表了。為什么叫內(nèi)部表,因為這種表,Hive會(或多或少地)控制著數(shù)據(jù)的生命周期。
如果你熟悉Hive那你一定知道,Hive默認情況下會將這些表的數(shù)據(jù)存儲在由配置項 hive.metastore.warehouse.dir (例如,/user/hive/warehouse)所定義的目錄的子目錄下。
當我們刪除一個內(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)鍵字,那么目標文件夾中之前存在的數(shù)據(jù)將會被先刪 除掉。如果沒有這個關(guān)鍵字,僅僅會把新增的文件增加到目標文件夾中而不會刪除之 前的數(shù)據(jù)。如果目標文件夾中已經(jīng)存在和裝載的文件同名的文件,那么舊的同 名文件將會被覆蓋重寫。
PARTITION:導入分區(qū)
如果分區(qū)目錄不存在的話,這個命令會先創(chuàng)建分區(qū)目錄,然后再將數(shù)據(jù)拷貝到該目錄下。如果目標表是非分區(qū)表,那么語句中應(yīng)該省略PARTITION子句。
通常情況下指定的路徑應(yīng)該是一個目錄,而不是單個獨立的文件。Hive會將所有文件 都拷貝到這個目錄中。這使得用戶將更方便地組織數(shù)據(jù)到多文件中,同時,在不修改 Hive腳本的前提下修改文件命名規(guī)則。不管怎么樣,文件都會被拷貝到目標表路徑下 而且文件名會保持不變。
如果使用了 LOCAL這個關(guān)鍵字,那么這個路徑應(yīng)該為本地文件系統(tǒng)路徑。數(shù)據(jù)將會被 拷貝到目標位置。如果省略掉LOCAL關(guān)鍵字,那么這個路徑應(yīng)該是HDFS的路徑。這種情況下,數(shù)據(jù)是從這個路徑轉(zhuǎn)移到目標位置的。
之前提到過Hive的schema on read,這種模式的優(yōu)勢是load data 非常迅速,因為它不需要讀取數(shù)據(jù)進行解析,僅僅進行文件的復(fù)制或者移動。Mysql的寫時模式的優(yōu)勢是提升了查詢性能,因為預(yù)先解析之后可以對列建立索引,并壓縮,但這樣也會花費要多的加載時間。
需要注意的是:
如果加載的文件在HDFS上,此文件會被移動到表路徑中;
如果加載的文件在本地,此文件會被復(fù)制到HDFS的表路徑中;
會為每一個待導入的文件,啟動一個MR任務(wù)進行導入。
如同內(nèi)部表一樣,外部表在創(chuàng)建表時也需要指定數(shù)據(jù)表所在的數(shù)據(jù)文件的路徑——以下簡稱為表路徑。如果沒有指定,Hive會自動分配一個。自動分配的目錄是hive主目錄下的以表名命名目錄;
如果創(chuàng)建外部表時,指定表的數(shù)據(jù)存儲目錄。Hive會將此目錄下已有的所有文件作為表的數(shù)據(jù)文件,在查詢時進行解析。此時,Hive仍會在hive的目錄下創(chuàng)建以表名命名的目錄,但目錄內(nèi)的內(nèi)容為空。
以上是“Hive如何創(chuàng)建內(nèi)部表 ”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。