這篇文章主要為大家展示了“Hive如何創(chuàng)建外部表”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Hive如何創(chuàng)建外部表”這篇文章吧。
樂都網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)建站,樂都網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為樂都上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的樂都做網(wǎng)站的公司定做!
別的先不說,開門見山說說內(nèi)部表的特點:
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ù)驗證是schema on write(寫時模式),而 Hive 在load時是不檢查數(shù)據(jù)是否符合schema的,hive 遵循的是schema on read(讀時模式),只有在讀的時候hive才檢查、解析具體的數(shù)據(jù)字段、schema;所以在這樣的設(shè)計下,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ù)位于哪個路徑下。
然而,我們需要清楚的重要的一點是管理表和外部表之間的差異要比剛開始所看到的小得多。即使對于管理表,用戶也是可以知道數(shù)據(jù)是位于哪個路徑下的,因此用戶也是可以使用其他工具(例如hadoop的hdfs dfs命令等)來修改甚至刪除管理表所在的路徑目錄下的數(shù)據(jù)的。
可能從嚴格意義上來說,Hive是管理著這些目錄和文件,但是其并非具有對它們的完全控制權(quán)限。Hive實際上對于所存儲的文件的完整性以及數(shù)據(jù)內(nèi)容是否和表模式相一致并沒有支配能力,甚至管理表都沒有給用戶提供這些管理能力。
盡管如此,好的軟件設(shè)計的一般原則是表達意圖。如果數(shù)據(jù)會被多個工具共享,那么可以創(chuàng)建一個外部表,來明確對數(shù)據(jù)的所有權(quán)。
用戶可以在DESCRIBE EXTENDED tablename 語句的輸出中查看到表是否是管理表或外部表。在末尾的詳細表信息輸出中,對于管理表,用戶可以看到如下信息:
... tableType:MANAGED_TABLE)
對于外部表,用戶可以查看到如下信息:
... tableType:EXTERNAL_TABLE)
對于管理表,用戶還可以對一張存在的表進行表結(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)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!