3 回答

TA貢獻1859條經驗 獲得超6個贊
配置單元表可以創建為EXTERNAL或INTERNAL。這是一個影響數據加載,控制和管理方式的選擇。
在以下情況下使用EXTERNAL表:
該數據還用于Hive之外。例如,數據文件由不鎖定文件的現有程序讀取和處理。
即使在放置DROP TABLE之后,數據也需要保留在底層位置。如果您將多個模式(表或視圖)指向一個數據集,或者正在遍歷各種可能的模式,則可以應用此方法。
您要使用自定義位置,例如ASV。
Hive不應擁有數據和控件設置,目錄等,您可以使用其他程序或進程來執行這些操作。
您不是基于現有表(AS SELECT)創建表。
在以下情況下使用INTERNAL表:
數據是臨時的。
您希望Hive完全管理表和數據的生命周期。

TA貢獻1829條經驗 獲得超7個贊
回答您的問題:
對于外部表,Hive不會將數據移動到其倉庫目錄中。如果刪除了外部表,那么將刪除表元數據,但不會刪除數據。
對于內部表,Hive將數據移動到其倉庫目錄中。如果刪除了表,則表元數據和數據將被刪除。
供你參考,
內部和外部表之間的區別:
對于外部表-
外部表將文件存儲在HDFS服務器上,但表未完全鏈接到源文件。
如果刪除外部表,該文件仍保留在HDFS服務器上。
例如,如果您使用HIVE-QL在HIVE中創建一個名為“ table_test”的外部表并將該表鏈接到文件“ file”,則從HIVE中刪除“ table_test”不會從HDFS中刪除“ file”。
有權訪問HDFS文件結構的任何人都可以訪問外部表文件,因此需要在HDFS文件/文件夾級別管理安全性。
元數據保留在主節點上,從HIVE中刪除外部表只會刪除元數據,而不會刪除數據/文件。
對于內部表-
根據設置存儲在目錄中
hive.metastore.warehouse.dir
, 默認情況下,內部表存儲在以下目錄“ / user / hive / warehouse”中,您可以通過更新配置文件中的位置來進行更改。刪除表將分別從主節點和HDFS中刪除元數據和數據。
內部表文件安全性僅通過HIVE控制。安全需要在HIVE內部進行管理,可能需要在架構級別(取決于組織)進行管理。
Hive可能具有內部或外部表,這是一個會影響數據加載,控制和管理方式的選擇。
在以下情況下使用EXTERNAL表:
該數據還用于Hive之外。例如,數據文件由不鎖定文件的現有程序讀取和處理。
即使在放置DROP TABLE之后,數據也需要保留在底層位置。如果您將多個模式(表或視圖)指向單個數據集,或者正在遍歷各種可能的模式,則可以應用此方法。
Hive不應擁有數據和控件設置,目錄等,否則您可能會有另一個程序或進程來執行這些操作。
您不是基于現有表(AS SELECT)創建表。
在以下情況下使用INTERNAL表:
該數據是暫時的。
您希望Hive完全管理表和數據的生命周期。
- 3 回答
- 0 關注
- 1008 瀏覽
添加回答
舉報