hive內部表和外部表

hive內部表就是在create的時候,不加external,就是內部表,數據會複製到hive的warehouse裏。html

hive外部表就是在create的時候,加上external,就是外部表。外部表分多種spa

有hbase的外部表。有文件系統的外部表,機理是差不錯的。基於文件系統的外部表,必定要加location,不然的話會和內部表同樣,會複製數據到warehouse。外部表在drop table的時候不會刪除location下的數據,只會刪除metastore中的表的數據。而內部表會刪除全部東西,包括warehouse中的數據和metastore中的數據。htm

有一次drop一個外部表,可是在warehouse中仍是有表的數據,只是show tables時,沒有顯示錶。這是由於我在create外部表的時候,忘記加上location。因此數據會複製到warehouse中,可是drop外部表的時候只會刪除metastore中的數據。因此在warehouse中數據老是刪除不掉。get

因此若是不加location,就不要加external關鍵字io

下面這篇文章講的就是基於文件系統的外部表和內部表的區別,講的很詳細。注意,基於文件系統的外部表,必定要加location,不然的話會和內部表同樣,會複製數據到warehouse。table

參考:hive內部表與外部表區別詳細介紹ast

相關文章
相關標籤/搜索