Hive內部表和外部表的區別,以及各自使用的環境?

 

未被external修飾的是內部表(managed table), 被external修飾的爲外部表(external table);
區別:
內部表數據由Hive自身管理,外部表數據由HDFS管理;
內部表數據存儲的位置是hive.metastore.warehouse.dir(默認:/user/hive/warehouse),外部表數據的存儲位置由本身制定;
刪除內部表會直接刪除元數據(metadata)及存儲數據;刪除外部表僅僅會刪除元數據,HDFS上的文件並不會被刪除,數據還在HDFS裏面;
內部表的修改會將修改直接同步給元數據,而對外部表的表結構和分區進行修改,則須要 修復(MSCK REPAIR TABLE table_name;)
主要體如今load與drop(是否同時刪除元數據與數據)的操做上
Hive建立內部表時,會將數據移動到數據倉庫指向的路徑,hive管理數據的生命週期。
建立外部表時,僅僅記錄數據所在的路徑,並不會對數據作任何處理。
 
 
選擇:
內部表與外部表沒有太大區別,若是全部的 數據都用Hive處理,則建立內部表;若是數據的處理須要 hive和其餘工具一塊兒處理,則建立外部表。
相關文章
相關標籤/搜索