1. 程式人生 > 實用技巧 >Hive裡的資料型別

Hive裡的資料型別

3.1 基本資料型別
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);
3.2 集合資料型別

集合資料型別測試

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';
3.3 Hive 裡面的型別轉換
1. double在Hive裡面是最大 string可以轉成double
2. 強制型別轉化  cast('1' as type)