溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Hive如何創(chuàng)建外部表

發(fā)布時間:2021-12-10 09:15:22 來源:億速云 閱讀:287 作者:小新 欄目:大數(shù)據(jù)

這篇文章主要為大家展示了“Hive如何創(chuàng)建外部表”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Hive如何創(chuàng)建外部表”這篇文章吧。

別的先不說,開門見山說說內(nèi)部表的特點(diǎn):

  • Hive 創(chuàng)建內(nèi)部表時,會將數(shù)據(jù)移動到數(shù)據(jù)倉庫指向的路徑;

  • Hive 創(chuàng)建外部表,僅記錄數(shù)據(jù)所在的路徑,不對數(shù)據(jù)的位置做任何改變;

  • 在刪除表的時候,內(nèi)部表的元數(shù)據(jù)和數(shù)據(jù)會被一起刪除,而外部表只刪除元數(shù)據(jù),不刪除數(shù)據(jù)。這樣外部表相對來說更加安全些,數(shù)據(jù)組織也更加靈活,方便共享源數(shù)據(jù)。


傳統(tǒng)數(shù)據(jù)庫對表數(shù)據(jù)驗(yàn)證是schema on write(寫時模式),而 Hive 在load時是不檢查數(shù)據(jù)是否符合schema的,hive 遵循的是schema on read(讀時模式),只有在讀的時候hive才檢查、解析具體的數(shù)據(jù)字段、schema;所以在這樣的設(shè)計(jì)下,Hive支持創(chuàng)建外部表也變得理所應(yīng)當(dāng),我們來看下如何創(chuàng)建一個外部表。

CREATE EXTERNAL TABLE table_name(id STRING,  name STRING)  ROW FORMAT DELIMITEDLOCATION '/data/my_data.txt';

關(guān)鍵字EXTENAL告訴Hive這個表是外部的,而后面的LOCATION...子句則用于告訴Hive數(shù)據(jù)位于哪個路徑下。

然而,我們需要清楚的重要的一點(diǎn)是管理表和外部表之間的差異要比剛開始所看到的小得多。即使對于管理表,用戶也是可以知道數(shù)據(jù)是位于哪個路徑下的,因此用戶也是可以使用其他工具(例如hadoop的hdfs dfs命令等)來修改甚至刪除管理表所在的路徑目錄下的數(shù)據(jù)的。

可能從嚴(yán)格意義上來說,Hive是管理著這些目錄和文件,但是其并非具有對它們的完全控制權(quán)限。Hive實(shí)際上對于所存儲的文件的完整性以及數(shù)據(jù)內(nèi)容是否和表模式相一致并沒有支配能力,甚至管理表都沒有給用戶提供這些管理能力。

盡管如此,好的軟件設(shè)計(jì)的一般原則是表達(dá)意圖。如果數(shù)據(jù)會被多個工具共享,那么可以創(chuàng)建一個外部表,來明確對數(shù)據(jù)的所有權(quán)。

用戶可以在DESCRIBE EXTENDED tablename 語句的輸出中查看到表是否是管理表或外部表。在末尾的詳細(xì)表信息輸出中,對于管理表,用戶可以看到如下信息:

... tableType:MANAGED_TABLE)

對于外部表,用戶可以查看到如下信息:

... tableType:EXTERNAL_TABLE)

對于管理表,用戶還可以對一張存在的表進(jìn)行表結(jié)構(gòu)復(fù)制(而不會復(fù)制數(shù)據(jù)):

CREATE EXTERNAL TABLE IF NOT EXISTS ods.ods_table_nameLIKE mydb.employeesLOCATION '/path/to/data';

這里,如果語句中省略掉EXTERNAL關(guān)鍵字而且源表是外部表的話,那么生成的新表也將是外部表。如果語句中省略掉EXTERNAL關(guān)鍵字而且源表是內(nèi)部表的話,那么生成的新表也將是內(nèi)部表。

但是,如果語句中包含有EXTERNAL關(guān)鍵字而且源表是內(nèi)部表的話,那么生成的新表將是外部表。即使在這種場景下,LOCATION子句同樣是可選的。

以上是“Hive如何創(chuàng)建外部表”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI