Hive裡的資料型別
阿新 • • 發佈:2020-12-02
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)