1、四种数据类型
hive的数据类型和JAVA类似
Hive所有数据类型分为四种类型,给出如下:
列类型
文字
Null 值
复杂类型
2、列类型
(1)整型
整型数据可以指定使用整型数据类型,INT。 当数据范围超过INT的范围,需要使用BIGINT,
如果数据范围比INT小,使用SMALLINT。 TINYINT比SMALLINT小。
下表描述了各种INT数据类型:
类型 | 后缀 | 示例 |
TINYINT | Y | 10Y |
SMALLINT | S | 10S |
INT | - | 10 |
BIGINT | L | 10L |
(2)字符串
字符串类型的数据类型可以使用单引号(’’)或双引号(“”)来指定。
它包含两个数据类型:VARCHAR和CHAR。Hive遵循C-类型的转义字符。
下表描述了各种CHAR数据类型:
数据类型 | 长度 |
VARCHAR | 1 to 65355 |
CHAR | 255 |
(3)日期类型
DATE值在年/月/日的格式形式描述 {{YYYY-MM-DD}}.
(4)时间戳
它支持传统的UNIX时间戳可选纳秒的精度。它支持的java.sql.Timestamp格式“YYYY-MM-DD HH:MM:SS.fffffffff”和格式“YYYY-MM-DD HH:MM:ss.ffffffffff”。
(5)小数点
在Hive 小数类型与Java大十进制格式相同。它是用于表示不可改变任意精度。语法和示例如下:
DECIMAL(precision, scale)
decimal(10,0)
(6)联合类型
联合是异类的数据类型的集合。可以使用联合创建的一个实例。语法和示例如下:
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}
3、文字类型
(1)浮点类型
浮点类型是只不过有小数点的数字。通常,这种类型的数据组成DOUBLE数据类型。
(2)十进制类型
十进制数据类型是只不过浮点值范围比DOUBLE数据类型更大。十进制类型的范围大约是 -10 ^-308到 10^308.
4、null类型
缺少值通过特殊值 - NULL表示
5、复杂类型
三种复杂的数据类型:array、map、struct
(1)数组
在Hive 数组与在Java中使用的方法相同。
Syntax: ARRAY<data_type>
(2)映射
映射在Hive类似于Java的映射。
Syntax: MAP<primitive_type, data_type>
(3)结构体
在Hive结构体类似于使用复杂的数据。
Syntax: STRUCT<col_name : data_type [COMMENT col_comment], ...>
6、不同数据类型之间的转换
类型转化和java中的类型转化类似。数据类型的转化可以采用cast。
(1) 隐式类型转换规则如下:
a.任何整数类型都可以隐式的转换为一个范围更广的类型,例如tinyint可以转化为int,int可以转换为bigint;
b.所有整数类型float 和string类型都可以转换为 double
c.tinnyint、smallint、int 都可以转换为int
d.boolean类型不可以转换为其他任何类型。
(2)使用cast进行数据类型转化
例如:cast(“1” as int)将把字符串“1”转化成整数1;如果强制类型转化失败,如执行cast(“X”as int)表达式返回空值null