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對內部表支持的功能比較全面,方便管理