1.基本類型

hive基本數(shù)據(jù)類型
- 對于Hive的String類型相當(dāng)于數(shù)據(jù)庫的varchar類型,該類型是一個可變的字符串,不過它不能聲明其中最多能存儲多少個字符,理論上它可以存儲2GB的字符數(shù)。
2.集合數(shù)據(jù)類型

微信截圖_20230518200528.png
- Hive有三種復(fù)雜數(shù)據(jù)類型ARRAY、MAP 和 STRUCT。ARRAY和MAP與Java中的Array和Map類似,而STRUCT與C語言中的Struct類似,它封裝了一個命名字段集合,復(fù)雜數(shù)據(jù)類型允許任意層次的嵌套。
3.案例實操
- 假設(shè)某表有如下一行,我們用JSON格式來表示其數(shù)據(jù)結(jié)構(gòu)。在Hive下訪問的格式為
{
"name": "songsong",
"friends": ["bingbing" , "lili"] , //列表Array,
"children": { //鍵值Map,
"xiao song": 19 ,
"xiaoxiao song": 18
}
"address": { //結(jié)構(gòu)Struct,
"street": "hui long guan" ,
"city": "beijing"
}
}
- 基于上述數(shù)據(jù)結(jié)構(gòu),我們在Hive里創(chuàng)建對應(yīng)的表,并導(dǎo)入數(shù)據(jù)。
- 創(chuàng)建本地測試文件test.txt
songsong,bingbing_lili,xiao song:18_xiaoxiao song:19,hui long guan_beijing
yangyang,caicai_susu,xiao yang:18_xiaoxiao yang:19,chao yang_beijing
- Hive上創(chuàng)建測試表test
create table test(
name string,
friends array<string>,
children map<string, int>,
address struct<street:string,city:string>
)
row format delimited fields terminated by ','
collection items terminated by '_'
map keys terminated by ':'
lines terminated by '\n';
\\ row format delimited fields terminated by ',' -- 列分隔符
\\ collection items terminated by '_' --MAP STRUCT 和 ARRAY 的分隔符(數(shù)據(jù)分割符號)
\\ map keys terminated by ':' -- MAP中的key與value的分隔符
\\ lines terminated by '\n'; -- 行分隔符
\\ STORED AS TEXTFILE; ----保存為textfile格式