[hive]hive資料模型中四種表

TOMOCAT發表於2018-08-14

Hive包含內部表、外部表、分割槽表和桶表。

一、內部表

內部表也稱為管理表。因為這種表,Hive會或多或少地空值資料的生命週期。Hive預設情況下回將這些表的資料儲存在由配置項hive.metastore.warehouse.dir所定義的目錄(比如/user/hive/warehouse)的子目錄下。

如果我有一個表test,那麼在HDFS中會建立/user/hive/warehouse/test目錄(這裡假定hive.metastore.warehouse.dir配置為/user/hive/warehouse);test表所對應的所有資料都存放在這個目錄中。
如果刪除這張表,則表在關係資料中儲存的後設資料以及在warehouse目錄下的資料也會被清除掉。

同時管理表不方便與其他工作共享資料。例如我們有一份由Pig或者其他工具建立並且主要由這一工具使用的資料,同時我們還想使用Hive在這份資料上執行一些查詢,可是並沒有給予Hive對資料的所有權,我們可以建立一個外部表指向這份資料,而並不需要對其具有所有權。

二、外部表

為了避免潛在產生混淆的可能性,如果使用者不想使用預設的表路徑,那麼最好是使用外部表。

外部表可以讀取指定目錄下的以逗號為分隔的資料:

CREATE EXTERNAL TABLE IF NOT EXISTS stocks(
 exchange   STRING,
 symbol     STRING,
 ymd        STRING,
 price_open FLOAT,
 price_high FLOAT,
 volume     INT,
 price_adj_close  FLOAT)
ROW FORMAT DELIMITED FIFLDS TERMINATED BY ',' --逗號分隔檔案
LOCATION '/data/stocks'  --指定Hive資料的路徑

因為表是外部的,所以Hive並非認為完全擁有這份資料,從而刪除該表的時候不會刪除這份資料。不過描述表的後設資料資訊會被刪除掉。

三、分割槽表

分割槽表用於水平分散壓力,將資料從物理上轉移到和使用最頻繁的使用者更近的地方。

相關文章