Hive - 数据类型
本章将带您了解 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.ffffffffff"和格式"yyyy-mm-dd hh:mm:ss.ffffffffff"。
日期
DATE 值以年/月/日格式描述,格式为 {{YYYY-MM-DD}}。
小数
Hive 中的 DECIMAL 类型与 Java 的大十进制格式相同。用于表示不可变的任意精度。语法和示例如下:
DECIMAL(precision, scale) decimal(10,0)
Union 类型
Union 是异构数据类型的集合。您可以使用 create union 创建实例。语法和示例如下:
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 到 10308。空值
缺失值用特殊值 NULL 表示。
复杂类型
Hive 复杂数据类型如下:
数组
Hive 中的数组使用方式与 Java 中的数组使用方式相同。
语法:ARRAY<data_type>
映射
Hive 中的映射与 Java 映射类似。
语法:MAP<primitive_type, data_type>
结构
Hive 中的结构类似于使用带注释的复杂数据。
Syntax: STRUCT<col_name : data_type [COMMENT col_comment], ...>