Hive內部表 外部表區別

2021-06-29 09:48:16 字數 1386 閱讀 2949

hive內部表、外部表區別自不用說,可實際用的時候還是要小心。

1. 內部表:

[sql]view plain

copy

print

?create

table tt (name string , age string) location '/input/table_data';  

此時,會在hdfs上新建乙個tt表的資料存放地,例如,筆者是在 hdfs://master/input/table_data 

上傳hdfs資料到表中:

[sql]view plain

copy

print

?load data inpath '/input/data'

into

table tt;  

此時會將hdfs上的/input/data目錄下的資料轉移到/input/table_data目錄下。

刪除tt表後,會將tt表的資料和元資料資訊全部刪除,即最後/input/table_data下無資料,當然/input/data下再上一步已經沒有了資料!

如果建立內部表時沒有指定location,就會在/user/hive/warehouse/下新建乙個表目錄,其餘情況同上。

注意的地方就是:load data會轉移資料!

2. 外部表:

[sql]view plain

copy

print

?create external table et (name string , age string);  

此時,會在/user/hive/warehouse/新建乙個表目錄et

[sql]view plain

copy

print

?load data inpath '/input/edata'

into

table et;  

此時會把hdfs上/input/edata/下的資料轉到/user/hive/warehouse/et下

,刪除這個外部表後,/user/hive/warehouse/et下的資料不會刪除,但是/input/edata/下的資料在上一步load後已經沒有了!資料的位置發生了變化!本質是load乙個hdfs上的資料時會轉移資料!

3. 其他:

(1)加上location用法一樣,只不過表目錄的位置不同而已。

(2)加上partition用法也一樣,只不過表目錄下會有分割槽目錄而已。

(3)load data local inpath直接把本地檔案系統的資料上傳到hdfs上,有location上傳到location指定的位置上,沒有的話上傳到hive預設配置的資料倉儲中。

Hive內部表 外部表 區別

以下基於hive 2.0.0 snapshot,本人親自實驗的結論!新增欄位會導致表結構同時改變,與是否是外部表內部表無關,也與是否指定location無關!從本地load新分割槽的資料會導致表的分割槽資訊同時改變,與是否是外部表內部表無關,也與是否指定location無關!2 drop表時,如果是...

Hive內部表和外部表區別

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

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

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