基本數據類型
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)