17hive主流儲存格式

2021-09-26 05:49:28 字數 2865 閱讀 2362

1.列式儲存和行式儲存

(1)列儲存的特點:

因為每個欄位的資料聚集儲存,在查詢只需要少數幾個欄位的時候,能大大減少讀取的資料量;

每個欄位的資料型別一定是相同的,可以針對性的設計更好的壓縮演算法。

(2)行儲存的特點:

查詢滿足條件的一整行資料的時候,列儲存則需要去每個聚集的字段找到對應的每個列的值,

行儲存只需要找到其中乙個值,其餘的值都在相鄰地方,所以此時行儲存查詢的速度更快。

(3)基礎:

orc和parquet的儲存格式是基於列式儲存的。

textfile和sequencefile是基於行儲存的;

2.textfile格式
預設格式,資料不做壓縮,磁碟開銷大,資料解析開銷大。

可結合gzip,bzip2使用。但使用gzip,hive不會對資料進行切分,從而無法對資料進行並行操作。

3.orc格式
每個orc檔案由乙個或多個stripe組成,每個stripe裡由三部分,分別

是index data,row data,stripe footer。

(1)index data:

乙個輕量級的index,預設是每隔1w行做乙個索引。

這裡的索引只是記錄某行的各字段在row data中的offset.

(2) row data:

存具體的資料,先取部分行,然後對這些行按列進行儲存。

對每個列進行了編碼,分成多個stream來儲存。

(3) stripe footer:

存的是各個stream的型別,長度等資訊。

每個檔案有乙個file footer,這裡面存的是每個stripe的行數,每個column的

資料型別資訊等;

每個檔案的尾部是乙個postscript,這裡面記錄了整個檔案的壓縮型別以

及filefooter的長度資訊等;

在讀取檔案時,會seek到檔案尾部讀postscript,從裡面解析到file footer長度,

再讀filefooter,從裡面解析到各個stripe資訊,再讀各個stripe,即從後往前讀。

4.parquet格式
parquet檔案是以二進位制方式儲存的,所以是不可以直接讀取的,檔案中包括該

檔案的資料和元資料,因此parquet格式檔案是自解析的。

處理資料最小單位是乙個block,

1.textfile
(1)建立儲存資料格式為textfile的表

create table log_text(

track_time string,

url string,

session_id string,

referer string,

ip string,

end_user_id string,

city_id string

) row format delimited fields terminated by '\t'

stored as textfile;

(2)向表中載入資料

load data local inpath '/root/hivedata/log.data' into table log_text;

(3)檢視表中資料大小

dfs -du -h /user/hive/warehouse/log_text;

2.orc
(1)建立儲存資料格式為orc的表

create table log_orc(

track_time string,

url string,

session_id string,

referer string,

ip string,

end_user_id string,

city_id string

) row format delimited fields terminated by '\t'

stored as orc;

(2)向表中載入資料

insert into table log_orc select * from log_text;

(3)檢視表中資料大小

dfs -du -h /user/hive/warehouse/log_orc/;

3.parquet
(1)建立儲存資料格式為parquet的表

create table log_parquet(

track_time string,

url string,

session_id string,

referer string,

ip string,

end_user_id string,

city_id string

) row format delimited fields terminated by '\t'

stored as parquet;

(2)向表中載入資料

insert into table log_parquet select * from log_text;

(3)檢視資料大小

dfs -du -h /user/hive/warehouse/log_parquet/;

4.儲存檔案的壓縮比總結:
orc >  parquet >  textfile
5.儲存檔案的查詢速度測試:
select count(*) from log_text;

select count(*) from log_orc;

select count(*) from log_parquet;

總結:查詢速度相近。

17 hive 的資料儲存格式

行儲存的特點 查詢滿足條件的一整行 所有列 資料的時候,列儲存則需要去每個聚集的字段找到對應的每個列的值,行儲存只需要找到其中乙個值,其餘的值都在相鄰地方,所以此時行儲存查詢的速度更快。列儲存的特點 因為每個欄位的資料聚集儲存,在查詢只需要少數幾個欄位的時候,能大大減少讀取的資料量 每個欄位的資料型...

hive儲存格式

textfile 預設格式,行儲存,匯入資料時直接把資料檔案拷貝到hdfs的hive表目錄 hive location 資料檔案可先經過gzip等壓縮,再導hive表 系統自動檢查,執行查詢時自動解壓 但使用這種方式,hive不會對資料進行切分,從而無法對資料進行並行操作.優點 資料載入快 load...

Hive儲存格式

hive的四種儲存格式 textfile sequencefile rcfile parquet 列式儲存和行式儲存的比較 優點缺點 行式儲存 一行資料是一條記錄,放在同乙個block塊中 只查詢幾個列時,也會讀取整行的資料,當資料量大時,影響效能 方便進行insert update操作 不同型別的...