Hive 数据类型
本章将带你了解 Hive 中涉及表创建的不同数据类型。 Hive 中的所有数据类型都分为四种类型,如下所示:
- 列类型
- Literals
- 空值
- 复杂类型
列类型
列类型用作 Hive 的列数据类型。它们如下:
积分类型
可以使用整数数据类型 INT 指定整数类型数据。当数据范围超出 INT 范围时,需要使用 BIGINT,如果数据范围小于 INT,则使用 SMALLINT。 TINYINT 小于 SMALLINT。
下表描述了各种 INT 数据类型:
Type | Postfix | 例子 |
---|---|---|
TINYINT | Y | 10Y |
SMALLINT | S | 10S |
INT | - | 10 |
BIGINT | L | 10L |
String Types
String type data types can be specified using single quotes (' ') or double quotes (" "). It contains two data types: VARCHAR and CHAR. Hive follows C-types escape characters.
下表描述了各种 CHAR 数据类型:
数据类型 | Length |
---|---|
VARCHAR | 1 至 65355 |
CHAR | 255 |
时间戳
它支持具有可选纳秒精度的传统 UNIX 时间戳。它支持 java.sql.Timestamp 格式“YYYY-MM-DD HH:MM:SS.fffffffff”和格式“yyyy-mm-dd hh:mm:ss.ffffffffff”。
Dates
DATE 值以 {{YYYY-MM-DD}} 形式以年/月/日格式描述。
Decimals
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}
Literals
Hive 中使用了以下文字:
浮点类型
浮点类型只不过是带小数点的数字。一般这种数据由DOUBLE数据类型组成。
十进制类型
十进制类型数据只不过是比 DOUBLE 数据类型具有更高范围的浮点值。十进制类型的范围约为-10 -308 to 10 308 .空值
缺失值由特殊值 NULL 表示。
复杂类型
Hive 复杂数据类型如下:
Arrays
Hive 中的数组的使用方式与 Java 中的使用方式相同。
语法: ARRAY<data_type>Maps
Maps in Hive are similar to Java Maps.
语法: MAP<primitive_type, data_type>Structs
Structs in Hive is similar to using complex data with comment.
语法: STRUCT<col_name : data_type [COMMENT col_comment], ...>