大資料學習 外部表 內部表詳解

2021-10-06 04:51:43 字數 666 閱讀 6303

外部表和內部表區別和實際運用:

前提知識儲備:

1、hive儲存的資料在hdfs上,建表的時候實際上是在hdfs上建立目錄而已。

2、hive的元資料資訊實際上是存在於mysql中(通常的做法)

3、訪問hive的資料是先訪問元資料再根據元資料的位址資訊來獲取資料

外部表和內部表在建表上的區別就是external(代表的外部表),外部表儲存的方式是固定的hdfs路徑,表是通過對映的方式訪問(load資料到表中),而內部表的訪問方式就是乙個表和乙個hdfs對應。所以在刪除外部表的時候,實際上是刪除的外部表的元資料資訊,但是資料在hdfs上絲毫未動,但是刪除內部表,刪除的是元資料和所有的hdfs上儲存的資料。

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

業務實際運用:

1、在ods層的資料一般建設成外部表的形式,在日誌產生的時候以檔案的形式落到hdfs

上,然後再通過load語句將外部表和相關的hdfs路徑關聯起來,這樣的話,多個表會以同樣的方式來訪問同乙個hdfs的檔案,也就實現了多個表共享資料。

2、ods層下面之後的資料使用內部表的形式,一般乙個業務線自我建設相關的資料,乙個表對應乙個hdfs路徑就可以了,刪表的時候可以把資料直接刪掉,就會騰出hdfs空間

Hive內部表 外部表

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

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

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

Hive外部表 內部表關聯資料

create table page view viewtime int,userid bigint,page url string,referrer url string,ip string comment ip address of the user comment this is the pag...