本章介紹Hive不同的數(shù)據(jù)類(lèi)型,用于創(chuàng)建表。Hive所有數(shù)據(jù)類(lèi)型分為四種類(lèi)型,給出如下:
列類(lèi)型被用作Hive的列數(shù)據(jù)類(lèi)型。它們?nèi)缦拢?/p>
整型數(shù)據(jù)可以指定使用整型數(shù)據(jù)類(lèi)型,INT。當(dāng)數(shù)據(jù)范圍超過(guò)INT的范圍,需要使用BIGINT,如果數(shù)據(jù)范圍比INT小,使用SMALLINT。 TINYINT比SMALLINT小。
下表描述了各種INT數(shù)據(jù)類(lèi)型:
類(lèi)型 | 后綴 | 示例 |
---|---|---|
TINYINT | Y | 10Y |
SMALLINT | S | 10S |
INT | - | 10 |
BIGINT | L | 10L |
字符串類(lèi)型的數(shù)據(jù)類(lèi)型可以使用單引號(hào)('')或雙引號(hào)(“”)來(lái)指定。它包含兩個(gè)數(shù)據(jù)類(lèi)型:VARCHAR和CHAR。Hive遵循C-類(lèi)型的轉(zhuǎn)義字符。
下表描述了各種CHAR數(shù)據(jù)類(lèi)型:
數(shù)據(jù)類(lèi)型 | 長(zhǎng)度 |
---|---|
VARCHAR | 1 to 65355 |
CHAR | 255 |
它支持傳統(tǒng)的UNIX時(shí)間戳可選納秒的精度。它支持的java.sql.Timestamp格式“YYYY-MM-DD HH:MM:SS.fffffffff”和格式“YYYY-MM-DD HH:MM:ss.ffffffffff”。
DATE值在年/月/日的格式形式描述 {{YYYY-MM-DD}}.
在Hive 小數(shù)類(lèi)型與Java大十進(jìn)制格式相同。它是用于表示不可改變?nèi)我饩取UZ(yǔ)法和示例如下:
DECIMAL(precision, scale) decimal(10,0)
聯(lián)合是異類(lèi)的數(shù)據(jù)類(lèi)型的集合??梢允褂寐?lián)合創(chuàng)建的一個(gè)實(shí)例。語(yǔ)法和示例如下:
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中使用的文字中:
浮點(diǎn)類(lèi)型是只不過(guò)有小數(shù)點(diǎn)的數(shù)字。通常,這種類(lèi)型的數(shù)據(jù)組成DOUBLE數(shù)據(jù)類(lèi)型。
十進(jìn)制數(shù)據(jù)類(lèi)型是只不過(guò)浮點(diǎn)值范圍比DOUBLE數(shù)據(jù)類(lèi)型更大。十進(jìn)制類(lèi)型的范圍大約是
-10
-308到 10
308.
缺少值通過(guò)特殊值 - NULL表示。
Hive復(fù)雜數(shù)據(jù)類(lèi)型如下:
在Hive 數(shù)組與在Java中使用的方法相同。
Syntax: ARRAY<data_type>
映射在Hive類(lèi)似于Java的映射。
Syntax: MAP<primitive_type, data_type>
在Hive結(jié)構(gòu)體類(lèi)似于使用復(fù)雜的數(shù)據(jù)。
Syntax: STRUCT<col_name : data_type [COMMENT col_comment], ...>
更多建議: