Hive內部表和外部表的區別

2021-09-12 11:14:22 字數 1229 閱讀 6679

建立

內部表:內部表直接建立,不需要加關鍵字

create

table

ifnot exits xm_testa(

kehumc varchar(50

)comment

'客戶名稱',

kehuzh varchar(50

)comment

'客戶號'

)comment

'客戶資訊表'

外部表:外部表的建立需要加上external關鍵字修飾,可以通過location指定hive倉庫的路徑

create external table

ifnot exits xm_testb(

kehumc varchar(50

)comment

'客戶名稱',

kehuzh varchar(50

)comment

'客戶號'

)comment

'客戶資訊表'

location '/user/xm/test'

預設倉庫路徑

內部表:內部表的預設建立路徑在:/user/hive/warehouse/database.db/xm_testa

外部表:外部表的預設建立路徑在:/user/hive/warehouse/database.db/xm_testb

drop 表

內部表:內部表刪除後會將元資料和路徑下的檔案都刪除

外部表:外部表只刪除元資料,不刪除路徑下的檔案

load載入資料

內部表:會把資料移動到自己指定的路徑下

外部表:不會把資料移動到自己的資料倉儲目錄下,也因此證明外部表的資料不是由自己管理的。

對於什麼時候使用外部表,什麼時候內部表,並沒有乙個固定的規範,通過最近一段時間的觀察,大概總結了一下幾點:

1.做etl處理時,通常會選擇內部表做中間表,因為清理時,會將hdfs上的檔案同時刪除

2.如果怕誤刪資料,可以選擇外部表,因為不會刪除檔案,方便恢復資料

3.如果對資料的處理都是通過hql語句完成,選擇內部表,如果有其他工具一同處理,選擇外部表

在沒有其他限制的情況下,優先使用外部表,因為:

1.不會載入資料到hive,減少資料傳輸,還能共享

2.不會對hdfs中的資料修改,不用擔心資料損壞,刪除表時只刪除表結構,不刪除資料

後續有其他的總結,會再補上。

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內部表和外部表的區別

1.未被external修飾的是內部表 managed table 被external修飾的為外部表 external table 區別 內部表資料由hive自身管理,外部表資料由hdfs管理 內部表資料儲存的位置是hive.metastore.warehouse.dir 預設 user hive ...