譯者注:
這篇文章中主要介紹了Hive中的Managed Table和External Table在存儲文件上的區(qū)別.更多的區(qū)別,請自行搜索.
在這篇文章中匙瘪,我們主要介紹題目中所說的那兩種Table的區(qū)別纹蝴,以及怎樣創(chuàng)建這兩種類型的表和什么時候我們會用到它們.
Hive有兩種類型的表:
- Managed Table
- External Table
下面我們詳細介紹這兩種表.
Managed Table
這種表也被稱作Internal Table.這是Hive中的默認的類型.如果你在創(chuàng)建表的時候沒有指明Managed或者External,那么默認就會給你創(chuàng)建Managed Table.
Managed Table的數據,會存放在HDFS中的特定的位置中,通常是/user/hduser/hive/warehouse.當然宾茂,也不一定,看你的Hive的配置文件中是如何配置的.
我們可以使用下面的命令來創(chuàng)建一個Managed Table:

我們已經成功創(chuàng)建一個Managed Table了拴还,我們使用下面的命令來查看:

在上圖中跨晴,我們可以看到,Table Type那里是Managed Table,這就表示我們確實創(chuàng)建了一個Managed類型的Table.
我們使用下面的命令片林,從本地文件系統(tǒng)中加載一些數據到這張表中:

通過下面的命令端盆,查看這張表在HDFS中的位置:

我們可以從上圖看到該表在HDFS中的位置.
下面我們刪除這張表:

我們成功地刪除了這張表.
我們再查看一下這種表在HDFS中是否存在:

在上圖中,我們可以看到拇厢,表和它的內容爱谁,都從HDFS中刪除了.
External Table
External Table特別適用于想要在Hive之外使用表的數據的情況.當你刪除External Table時,只是刪除了表的元數據孝偎,它的數據并沒有被刪除.
我們創(chuàng)建一張External Table,并查看一下它的結構:

從上圖中访敌,我們可以看到,表的類型是"External Table".
現在我們同樣從文件系統(tǒng)中加載一些數據到這張表中:

然后衣盾,我們可以通過下面的命令查看它的位置:

刪除它:

再檢查一下:

你可以看到寺旺,即使我們刪除了表爷抓,它的數據仍然存在.
什么時候使用哪種表?
Managed Table
- 數據是臨時數據
- 外部的程序無法訪問這些數據
- 數據會隨著表的刪除而刪除
External Table
- 數據可以被外部程序訪問
- 你不能基于已經存在的表再創(chuàng)建表
- 表被刪除時,數據不會被刪除