hive存儲格式sequencefile和rcfile的對比

源數據放在test1表中,大小 26413896039 Byte。


創建sequencefile 壓縮表test2,使用insert  overwrite table test2 select ...語句將test1數據導入 test2 ,設置配置項:

set hive.exec.compress.output=true;
set mapred.output.compress=true;
set mapred.output.compression.codec=com.hadoop.compression.lzo.LzoCodec;
SET io.seqfile.compression.type=BLOCK;
set io.compression.codecs=com.hadoop.compression.lzo.LzoCodec;

導入耗時:98.528s。另壓縮類型使用默認的record,耗時爲418.936s。


創建rcfile 表test3 ,同樣方式導入test3。

set hive.exec.compress.output=true;
set mapred.output.compress=true;
set mapred.output.compression.codec=com.hadoop.compression.lzo.LzoCodec;
set io.compression.codecs=com.hadoop.compression.lzo.LzoCodec;

導入耗時 253.876s。


以下爲其他統計數據對比:



rows 類型 合併耗時 文件數 總數據大小 count(1) 基於domain、referer求點擊的top100
238610458 原始數據 1134 26413896039 66.297s
238610458 seq 98.528(block) 418.936(record) 1134 32252973826 41.578 394.949s(讀入數據:32,253,519,280,讀入行數:238610458)
238610458 rcfile 253.876 s 15 3765481781 29.318 286.588s(讀入數據:1,358,993,讀入行數:238610458

因爲原始數據中均是小文件,所以合併後文件數大量減少,但是hive實現的seqfile 處理竟然還是原來的數目。rcfile 使用lzo 壓縮效果明顯,7倍的壓縮比率。查詢數據中讀入數據因爲這裏這涉及小部分數據,所以rcfile的表讀入數據僅是seqfile的4%.而讀入行數一致。

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