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操作 不同型別的...