大數據學習-外部表&內部表詳解

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

前提知識儲備:

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空間

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章