Hive內部表和外部表的區別

2021-10-09 05:56:45 字數 775 閱讀 2515

1.未被external修飾的是內部表(managed table),被external修飾的為外部表(external table);

區別:內部表資料由hive自身管理,外部表資料由hdfs管理;

內部表資料儲存的位置是hive.metastore.warehouse.dir(預設:/user/hive/warehouse),外部表資料的儲存位置由自己制定;

刪除內部表會直接刪除元資料(metadata)及儲存資料;刪除外部表僅僅會刪除元資料,hdfs上的檔案並不會被刪除;

對內部表的修改會將修改直接同步給元資料,而對外部表的表結構和分割槽進行修改,則需要修復(msck repair table table_name;)

2.hive 建立內部表時,會將資料移動到資料倉儲指向的路徑;若建立外部表,僅記錄資料所在的路徑,不對資料的位置做任何改變。在刪除表的時候,內部表的元資料和資料會被一起刪除,而外部表只刪除元資料,不刪除資料。這樣外部表相對來說更加安全些,資料組織也更加靈活,方便共享源資料。

需要注意的是傳統資料庫對錶資料驗證是 schema on write(寫時模式),而 hive 在load時是不檢查資料是否符合schema的,hive 遵循的是 schema on read(讀時模式),只有在讀的時候hive才檢查、解析具體的資料字段、schema。

讀時模式的優勢是load data 非常迅速,因為它不需要讀取資料進行解析,僅僅進行檔案的複製或者移動。

寫時模式的優勢是提公升了查詢效能,因為預先解析之後可以對列建立索引,並壓縮,但這樣也會花費要多的載入時間。

hive內部表和外部表的區別 內部表和外部表

內部表 create table if not exists table name刪除表時,元資料與資料都會被刪除 外部表 create external table if not exists table name location hdfs path刪除外部表只刪除metastore的元資料,不...

Hive內部表和外部表區別

建立內部表 建立 create table art inn sentence string row format delimited fields terminated by n 匯入 建立外部表 注意 外部表是在建立的時候定義實體資料的位置的,而且位置必須為資料夾,不能為檔案。1 匯入資料時 在匯...

Hive內部表和外部表的區別

建立 內部表 內部表直接建立,不需要加關鍵字 create table ifnot exits xm testa kehumc varchar 50 comment 客戶名稱 kehuzh varchar 50 comment 客戶號 comment 客戶資訊表 外部表 外部表的建立需要加上exte...