Hive數據類型

本章介紹Hive不同的數據類型,用於創建表。Hive所有數據類型分爲四種類型,給出如下:

  • 列類型
  • 文字
  • Null 值
  • 複雜類型

列類型

列類型被用作Hive的列數據類型。它們如下:

整型

整型數據可以指定使用整型數據類型,INT。當數據範圍超過INT的範圍,需要使用BIGINT,如果數據範圍比INT小,使用SMALLINT。 TINYINT比SMALLINT小。

下表描述了各種INT數據類型:

類型

後綴

示例

TINYINT

Y

10Y

SMALLINT

S

10S

INT

-

10

BIGINT

L

10L

字符串類型

字符串類型的數據類型可以使用單引號('')或雙引號(「」)來指定。它包含兩個數據類型:VARCHAR和CHAR。Hive遵循C-類型的轉義字符。

下表描述了各種CHAR數據類型:

數據類型

長度

VARCHAR

1 to 65355

CHAR

255

時間戳

它支持傳統的UNIX時間戳可選納秒的精度。它支持的java.sql.Timestamp格式「YYYY-MM-DD HH:MM:SS.fffffffff」和格式「YYYY-MM-DD HH:MM:ss.ffffffffff」。

日期

DATE值在年/月/日的格式形式描述 {{YYYY-MM-DD}}.

小數點

在Hive 小數類型與Java大十進制格式相同。它是用於表示不可改變任意精度。語法和示例如下:

DECIMAL(precision, scale)
decimal(10,0)

聯合類型

聯合是異類的數據類型的集合。可以使用聯合創建的一個實例。語法和示例如下:

UNIONTYPE<int, double, array, struct<a:int,b:string>>

{0:1}
{1:2.0}
{2:["three","four"]}
{3:{"a":5,"b":"five"}}
{2:["six","seven"]}
{3:{"a":8,"b":"eight"}}
{0:9}
{1:10.0}

文字

下面是Hive中使用的文字中:

浮點類型

浮點類型是隻不過有小數點的數字。通常,這種類型的數據組成DOUBLE數據類型。

十進制類型

十進制數據類型是隻不過浮點值範圍比DOUBLE數據類型更大。十進制類型的範圍大約是  -10 -308  到 10 308 .

Null 值

缺少值通過特殊值 - NULL表示。

複雜類型

Hive複雜數據類型如下:

數組

在Hive 數組與在Java中使用的方法相同。

Syntax: ARRAY<data_type>

映射

映射在Hive類似於Java的映射。

Syntax: MAP<primitive_type, data_type>

結構體

在Hive結構體類似於使用複雜的數據。

Syntax: STRUCT<col_name : data_type [COMMENT col_comment], ...>