hive相關概念

1、內部表和外部表

  • 外部表(external table)

external修飾,數據保存在HDFS上,位置由用戶指定。刪除表時,只會刪除表的元數據,外部表不是由Hive完全管理

  • 內部表(internal table/managed table)

沒有external修飾,表數據保存在Hive默認的路徑下,數據完全由Hive管理,刪除表時元數據和表數據會一併刪除。

區別

  • 外部表的表數據由HDFS管理,Hive管理外部表元數據,內部表的表數據和元數據都由Hive管理
  • 外部表的表數據存儲位置由用戶指定,而內部表的數據默認存儲位置爲/apps/hive/warehouse/數據庫名.db/數據文件名
  • 刪除外部表時,只會刪除表的元數據,表數據仍然存儲在HDFS中,刪除內部表時,元數據和表數據都會刪除
  • 對內部表修改時會同步到元數據,而對外部表結構和分區修改時,需要進行修復
    msck rapair table table_name

使用場景

  • 做數據備份並且不經常改變的數據,存放在外部表可以減少失誤操作
  • 處理完成的數據由於需要共享,可以存儲在外部表,這樣能夠防止失誤操作,增加數據的安全性
  • 數據清洗轉換後的中間結果,可以存放在內部表,因爲Hive對內部表支持的功能比較全面,方便管理

 

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