Hive學習筆記(二)—Hive數據類型和存儲格式

Hive 支持關係型數據中大多數基本數據類型,除了額外的三個複雜的數據類型。

一、數據類型

array

類比java中的array 有序的的同類型的集合

create table test(
    id int,
    name string,
    hobby array<string>
)
row format delimited
fields terminated by '\t'
collection items terminated by ','; 

array的默認分割是\002,在shell中如何敲出來ctrl+v ctrl+b,這裏使用的是逗號分隔

在導入數據時,數據的格式應該如下:

1 張三 read,run

array的引用,使用arrayName[index],索引從0開始

map

類比java中的map key-value,key必須爲原始類型,value可以任意類型

create table test(
    id int,
    name string,
    score map<string, float> comment "this is score"
) row format delimited 
fields terminated by '\t'
collection items terminated by ','
map keys terminated by '=';

根據上面的定義,導入的數據格式應該如下:

1 張三 Chinese=102,Math=121,English=124

map裏面的默認的key和value之間的分隔符:\003,在shell裏面通過ctrl+v ctrl+c
map具體值的調用格式,列名[“屬性”],比如score[“math”]

struct

類比java中的object 字段集合,類型可以不同

create table t5_struct (
    id int,
    name string,
    address struct<province:string, city:string, zip:int>
) row format delimited 
fields terminated by '\t'
collection items terminated by ',';

根據上面的定義,導入的數據格式應該如下:

id name address(province:string, city:string, zip:int)
1 小陳 bj,chaoyang,100002
2 老王 hb,shijiazhuang,052260
3 小何 hn,huaiyang,466000
4 小馬 hlj,harbin,10000

調用的格式:列名.屬性,比如address.province

二、存儲格式

textfile

textfile爲默認格式,存儲方式爲行存儲。數據不做壓縮,磁盤開銷大,數據解析開銷大

SequenceFile

SequenceFile是Hadoop API提供的一種二進制文件支持,其具有使用方便、可分割、可壓縮的特點
SequenceFile支持三種壓縮選擇:NONE, RECORD, BLOCK。 Record壓縮率低,一般建議使用BLOCK壓縮。

RCFile

一種行列存儲相結合的存儲方式

ORCFile

數據按照行分塊,每個塊按照列存儲,其中每個塊都存儲有一個索引。hive給出的新格式,屬於RCFILE的升級版,性能有大幅度提升,而且數據可以壓縮存儲,壓縮快 快速列存取。

Parquet

Parquet也是一種行式存儲,同時具有很好的壓縮性能;同時可以減少大量的表掃描和反序列化的時間

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章