hive支持的数据类型

2023-10-17 08:54:26 浏览数 (2)

一、hive数据类型

1.基础型

数据类型

长度大小

示例

TINYINT

1字节有符号整数,范围:-128~127

10Y

SMALLINT

2字节有符号整数,范围:-32768~32767

10S

INT

4字节有符号整数

10

BIGINT

8字节有符号整数

10L

FLOAT

4字节单精度浮点数

1.0

DOUBLE

8字节双精度浮点数

1.0

DECIMAL

任意精度带符号小数,范围:-99.99到99.99

DECIMAL(20, 2)

BOOLEAN

true/false

TRUE

STRING

字符串,长度不定

“a”, ‘b’

VARCHAR

字符串,长度不定,有上限

“a”, ‘b’

CHAR

字符串,固定长度

“a”, ‘b’

BINARY

存储变长的二进制数据

TIMESTAMP

时间戳,纳秒精度

1650778130

DATE

日期

'2023-02-27'

2.复杂型

数据类型

描述

示例

ARRAY

存储同类型数据

ARRAY< data_type>

MAP

key-value,key必须为原始类型,value可以是任意类型

MAP< primitive_type, data_type>

STRUCT

类型可以不同

STRUCT< col_name : data_type [COMMENT col_comment], …>

UNION

在有限取值范围内的一个值

UNIONTYPE< data_type, data_type, …>

Hive 除了支持 STRUCTARRAYMAP 这些原生集合类型,还支持集合的组合,不支持集合里再组合多个集合。

举例:MAP 嵌套 ARRAY,手动设置集合格式的数据非常麻烦,建议采用INSERT INTO SELECT形式构造数据再插入UNION 表

二、类型转换

1.隐式转换

Hive的类型层次中,可以根据需要进行隐式的类型转换,例如 TINYINT 与 INT相加,则会将TINYINT 转化成INT 然后相加。

隐式转换的规则:

任意数值类型都可以转换成更宽的数据类型(不会导致精度丢失)或者文本类型; 所有的文本类型都可以隐式地转换成另一种文本类型。也可以被转换成 DOUBLE 或者 DECIMAL,转换失败时抛出异常; BOOLEAN 不能做任何的类型转换; 时间戳和日期可以隐式地转换成文本类型。

2.显示转换

用 CAST 函数进行显式的类型转换

示例:

select cast(12345.89 as string);

0 人点赞