本章将向您介绍Hive中的不同数据类型,这些数据类型与表创建有关. Hive中的所有数据类型分为四种类型,如下所示:
列类型
文字
空值
复杂类型
列类型用作Hive的列数据类型.它们如下:
可以使用整数数据类型INT指定整数类型数据.当数据范围超出INT范围时,需要使用BIGINT,如果数据范围小于INT,则使用SMALLINT. TINYINT小于SMALLINT.
下表描述了各种INT数据类型:
类型 | Postfix | 示例 |
---|---|---|
TINYINT | Y | 10Y |
SMALLINT | S | 10S |
INT | - | 10 |
BIGINT | L | 10L |
字符串类型数据类型可以使用单引号('')或双引号("")指定.它包含两种数据类型:VARCHAR和CHAR. Hive遵循C类型转义字符.
下表描述了各种CHAR数据类型:
数据类型 | 长度 |
---|---|
VARCHAR | 1到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中的DECIMAL类型与Java的Big Decimal格式相同.它用于表示不可变的任意精度.语法和示例如下:
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数据类型组成.
十进制类型数据只是浮点值,其范围高于DOUBLE数据类型.十进制类型的范围约为-10 -308 至10 308 .
缺失值由特殊值NULL表示.
Hive复杂数据类型如下:
Hive中的数组的使用方式与它们在Java中的使用方式相同.
Syntax: ARRAY<data_type>
地图在Hive中类似于Java Maps.
Syntax: MAP<primitive_type, data_type>
Hive中的结构类似于使用带注释的复杂数据.
Syntax: STRUCT<col_name : data_type [COMMENT col_comment], ...>