本章介紹Hive不同的資料型別,用於建立表。Hive所有資料型別分為四種型別,給出如下:
列型別被用作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<string>, 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資料型別。
缺少值通過特殊值 - 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], ...>