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)   
posted @ 2020-12-02 16:48  Later^^  阅读(673)  评论(0编辑  收藏  举报