1. 程式人生 > >Hive內部表與外部表

Hive內部表與外部表

一、在Hive中建立表時,無external修飾的是內部表(managed table),有external修飾的是外部表(external table):
1、內部表的資料是Hive自身管理,外部表資料由HDFS管理; 
2、內部表資料儲存的位置是hive在hdfs中存在預設的儲存路徑,即default資料庫(預設:/user/hive/warehouse)。所以在該路徑        下的表為內部表。
      外部表資料儲存的位置由自己指定,可以指定除/user/hive/warehouse以外的路徑。
3、刪除內部表會直接刪除元資料(metadata)及儲存資料,對內部表的修改會將修改直接同步給元資料。
      刪除外部表僅僅會刪除元資料,HDFS上的檔案並不會被刪除,而對外部表的表結構和分割槽進行修改,則需要修復(MSCK REPAIR TABLE table_name)

說明:hive的資料分為兩種,一種為普通資料,一種為元資料。
       元資料儲存著表的基本資訊,增刪改查記錄,類似於Hadoop架構中的namespace。普通資料就是表中的詳細資料。
       hive的元資料預設儲存在derby中,但大多數情況下儲存在MySQL中。普通資料如架構圖所示儲存在hdfs中。

二、內部表和外部表的轉換:
內——>外
alter table tblName set tblproperties('EXTERNAL'='TRUE');
外——>內
alter table tblName set tblproperties('EXTERNAL'='FALSE');


https://www.iteblog.com/archives/899.html