hive---資料型別
數字型別
tinyint------微整數(-128至127)
smallint-------2位元組相當於java中的short
int/integer---4位元組
bigint-----8位元組(相當於java中的long)
float----4位元組(浮點型)小數
double--8位元組(浮點型精度更高)小數
日期時間型別
timestamp-------時間戳
date-----日期
字串型別
string
varchar(10)----可變長度字串
char-----單字元
混雜型別
boolean------布林值
binary-----用的少
複合型別
array陣列型別-----array<string>
排序函式:sort_array(欄位/陣列)
資料中有複雜資料型別建表
create table t_movie(movie_name string,actors array<string>,first_show date)
row format delimited fields terminated by ','
collection items terminated by ':';----------集合的元素按':'分割
查詢:
select movie_name,actors[0],first_show from t_movie;---陣列中第一個元素
select movie_name,actors,first_show
from t_movie where array_contains(actors(陣列欄位),'吳剛'(要查詢的值));------陣列中的內容
select movie_name
,size(actors) as actor_number ------------陣列長度函式
,first_show
from t_movie;
map型別
-- 有如下資料:
1,zhangsan,father:xiaoming#mother:xiaohuang#brother:xiaoxu,28
2,lisi,father:mayun#mother:huangyi#brother:guanyu,22
3,wangwu,father:wangjianlin#mother:ruhua#sister:jingtian,29
4,mayun,father:mayongzhen#mother:angelababy,26
-- 建表對映上述資料
create table t_family(id int,name string,family_members map<string,string>,age int)
row format delimited fields terminated by ','
collection items terminated by '#'
map keys terminated by ':';-----------------kv間隔
-- 匯入資料
load data local inpath '/root/hivetest/fm.dat' into table t_family;
-- 查出每個人的親人數量
select id,name,size(family_members) as relations,age
from t_family;
-- 查出所有擁有兄弟的人及他的兄弟是誰
-- 方案1:一句話寫完
select id,name,age,family_members['brother']-----family_members欄位中key值為brother的
from t_family where array_contains(map_keys(family_members)-------family_members中所有key值,返回陣列。map_values所有value的值
,'brother');
-- 方案2:子查詢
select id,name,age,family_members['brother']
from
(select id,name,age,map_keys(family_members) as relations,family_members
from t_family) tmp
where array_contains(relations,'brother');
struct型別
假如有以下資料:
1,zhangsan,18:male:深圳
2,lisi,28:female:北京
3,wangwu,38:male:廣州
4,趙六,26:female:上海
5,錢琪,35:male:杭州
6,李剛,48:female:南京
*/
-- 建表對映上述資料
drop table if exists t_user;
create table t_user(id int,name string,info struct<age:int,sex:string,addr:string>)
row format delimited fields terminated by ','
collection items terminated by ':';
-- 匯入資料
load data local inpath '/root/hivetest/user.dat' into table t_user;
-- 查詢每個人的id name和地址
select id,name,info.addr
from t_user;
union型別
多個型別中選其中之一。0.7版本後使用