Hive中LOCATION參數和EXTERNAL參數的關系


大家可以參考廈門大學數據庫實驗室這篇博客

雖然說,建立外部表會使用LOCATION指定位置,而建立內部表不使用LOCATION,會默認保存在/hive/warehouse/下,自動生成一個目錄,目錄名為表名。

但是通過一系列對比,我們可以發現,這兩個參數之間是沒有關系的。
我們可以建立外部表,不使用LOCATION;也可以建立內部表,使用LOCATION。

  • 建外部表使用LOCATION,讀取到數據,同時插入數據,會在LOCATION位置新生成文件000000_0,刪除外部表,數據文件還在,證明外部表功能還在。
  • 建內部表使用LOCATION,讀取到數據,同時插入數據也會生成新文件,但刪除內部表,數據文件都會消失,整個目錄都會刪除掉,也正好符合內部表的功能。
  • 建立外部表,不使用LOCATION,會在默認在/hive/warehouse/數據庫名稱/表名,建立目錄。然后插入數據,會生成新文件,刪除表。目錄和文件都還在。符合外部表功能。
  • 建立內部表,不使用LOCATION。在相應位置創建新目錄,插入數據,一樣生成新文件。但是如果刪除內部表,目錄和數據文件都會刪除掉。

結論

所以我們是否會在HDFS上看到生成新的目錄,取決於是否使用LOCATION,而不是外部表、內部表的關系。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM