Hive里的数据类型
基本数据类型
HIVE | MySQL | JAVA | 长度 | 例子 |
---|---|---|---|---|
TINYINT | TINYINT | byte | 1byte有符号整数 | 2 |
SMALINT | SMALINT | short | 2byte有符号整数 | 20 |
INT | INT | int | 4byte有符号整数 | 20 |
BIGINT | BIGINT | long | 8byte有符号整数 | 20 |
BOOLEAN | 无 | boolean | 布尔类型,true或者false | TRUE FALSE |
FLOAT | FLOAT | float | 单精度浮点数 | 3.14159 |
DOUBLE | DOUBLE | double | 双精度浮点数 | 3.14159 |
STRING | VARCHAR | string | 字符系列。可以指定字符集。可以使用单引号或者双引号。 | ‘now is the time’ “for all good men” |
TIMESTAMP | TIMESTAMP | 时间类型 | ||
BINARY | BINARY | 字节数组 |
对于Hive的String类型相当于数据库的varchar类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以存储2GB的字符数。
做一个数据类型测试
create table person(id int , name string, weight double ,money bigint);
insert into table person values(1001,'yanban',60,100000000000);
集合数据类型
集合数据类型测试
array,map,struct
songsong,bingbing_lili,xiao song:18_xiaoxiao song:19,hui long guan_beijing_10010
yangyang,caicai_susu,xiao yang:18_xiaoxiao yang:19,chao yang_beijing_10011
create table test(
name string,
friends array<string>,
children map<string,int>,
address struct<street:string,city:string,emaill:int>
)
row format delimited fields terminated by ',' --字段分隔符
collection items terminated by '_' --集合元素分隔符
map keys terminated by ':' --map的kv分隔符
lines terminated by '\n'; --行分隔符
查 songsong 的第一个朋友 xiao song 年龄 ,邮编
select name,friends[0],children['xiao song'],address.email from test where name ='songsong';
select name,friends[0],children['xiao song'],address.email from test;
查 songsong 的第一个朋友,第一个孩子 ,邮编
select name,friends[0],map_keys(children)[0],address.email from test where name ='songsong';
select name,friends[0],map_values(children)[0],address.email from test where name ='songsong';
Hive 里面的类型转换
1. double在Hive里面是最大 string可以转成double
2. 强制类型转化 cast('1' as type)