1、定義
Hive內部表:默認創建的表是內部表。hive完全管理表(元數據和數據)的聲明周期,類似于RDBMS的表。當刪除表時,他會刪除源數據以及表的元數據。
Hive外部表:外部表的數據不是Hive擁有或者管理的,只管理元數據的聲明周期。要創建一個外部表,需要使用external關鍵字。刪除外部表是只會刪除元數據,而不會刪除實際數據(源數據)。在hive外部依然可以訪問實際數據(HDFS)。
及
2、區別
數據存儲位置、數據管理方式、數據的持久性以及數據的導入和更新行為等方面
區別 | 內部表 | 外部表 |
---|---|---|
數據存儲位置 | Hive數據倉庫目錄,通常位于HDFS(Hadoop Distributed File System)上的/user/hive/warehouse目錄下 | 用戶指定的位置,如HDFS、本地文件系統等 |
數據管理方式 | Hive完全管理,表刪除時數據同步被刪除 | 用戶自行管理,Hive僅在元數據中維護表結構等元數據,不負責表的存儲和文件管理。如果刪除外部表,外部存儲的數據不受影響 |
數據的持久性 | 加載到表后會永久存儲,除非顯性刪除。重啟HIve或重新加載元數據后,內部表數據會保留 | 加載到表后不一定永久存儲,由用戶管理。若是臨時表,會話結束或者Hive重啟后可能會丟失 |
數據導入 | 用INSERT語句 | 多種方式加載,如通過LOAD DATA語句從本地文件系統或其他數據源加載數據。 |
ALTER操作 | 可更改更改表的屬性,例如更改列名、添加/刪除分區等。 | 僅允許更改表的一些元數據信息,例如重命名表、更改列的注釋等,但不能更改表的存儲位置或數據本身。 |
3、適用場景
1、內部表:
適用于需要完全由Hive管理和控制的數據;適合數據臨時處理、轉換等操作,及對數據進行清洗、統計分析、計算等需求;數據分析和處理的場景應用廣泛。
2、外部表:
適用于數據的長期存儲、備份和共享等需求;數據倉庫和數據湖場景多。