Hive數據類型和文件格式

Hive 支持關係數據庫中的大多數基本的數據類型,同時也支持在關係數據庫中很少出現的三種 **數據集合** 類型。

和大多數數據庫相比,Hive具有一個獨特的功能,就是對數據在文件中的編碼方式具有相當大的靈活性,大多數據庫對數據具有完全控制,也包括

對數據什麼週期的控制,Hive將這些方面的控制權交給用戶,以便更加容易的使用各種各樣的工具來管理和處理數據。

基本數據類型

Hive數據類型和文件格式

所有這些數據類型都是對Java中的接口實現,因此這些類型具體行為細節和Java中對應的類型完全一致.

Hive數據類型和文件格式

HDFS文本文件數據編碼

Hive數據類型和文件格式

綜合示例

CREATE TABLE IF NOT EXISTS mydb.employees
(
 name STRING COMMENT 'Employee name',
 salary FLOAT COMMENT 'Employee salary',
 subordinates ARRAY COMMENT ' Names of subordinates',
 deducations MAP COMMENT ' Keys are deducations names , Values are percentags',
 address STRUCT COMMENT 'Home Address'
)
COMMENT 'the table of empoyee'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\001'
COLLECTION ITEMS TERMINATED BY '\002'
MAP KEYS TERMINATED BY '\003'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE
LOCATION '/user/hive/warehouse/mydb.db/employees';
ROW FORMAT DELIMITED : 這組關鍵字必須些在其他子句之前(除STOREED AS .... 子句)
FIELDS TERMINATED BY : 指定 列 分隔符,使用默認分隔符 ^A
COLLECTION ITEMS TERMINATED BY : 指定 集合 元素間的分割符,使用默認分隔符 ^B
MAP KEYS TERMINATED BY : 指定MAP中 鍵和值之間的分離,使用默認分隔符 ^C
LINES TERMINATED BY : 指定 行 分隔符,使用默認的換行符 \n
STORED AS TEXTFILE : 指定Hive表的存儲格式
LOCATION : 指定數據文件位置

Hive表存儲格式

有4種主要的存儲格式,使用依據為數據類型和分析需要。但是在絕大數情況下,使用ORC或Parquet,它們為大多數數據類型提供了最佳的壓縮和速度優勢。

Hive數據類型和文件格式

表類型

在Hive中包括2種類型的表,內部表和外部表。

內部表 創建方式,常規的 CREATE TABLE 語句。對於內部表,由Hive完全控制,如刪除了內部表,在Hive的表定義和對應的表數據都會被刪除。

外部表 創建方法, CREATE EXTERNAL TABLE IF NOT EXISTS Names_text ,關鍵字為 EXTRENAL 。對於外部表不由Hive控制,對於外部表只是使用表元數據信息而進入到原始文本數據中。 如果刪除了外部表,只有表的元數據信息被刪除,實際的數據還是會被保留。數據是駐留在Hive之外的,或者是需要保留原始數據的表。


分享到:


相關文章: