關於hive當中表的存儲和壓縮方式總結


這幾天研究hive表的存儲方式和壓縮模式。在這里做一個簡單的總結

hive表的存儲

樣例 : 我的表:rp_person_house_loan_info

            數據總量:1933776

textfile

  (1)hive數據表的默認格式,存儲方式:行存儲 。

  (2) 可使用Gzip,Bzip2等壓縮算法壓縮,壓縮后的文件不支持split

上面的數據存儲格式為textfile,文件沒有壓縮總的文件大小為160.1M。

SequenceFile

(1)Hadoop API提供的一種二進制文件,以<key,value>的形式序列化到文件中。存儲方式:行存儲。

(2)支持三種壓縮選擇:NONE,RECORD,BLOCK。Record壓縮率低,一般建議使用BLOCK壓縮。

(3)優勢是文件和hadoop api中的MapFile是相互兼容的

上面數據的存儲模式為sequencefile,總的文件大小為186.86M

 

RCFile

(1)存儲方式:數據按行分塊,每塊按列存儲。結合了行存儲和列存儲的優點:

(2)首先,RCFile 保證同一行的數據位於同一節點,因此元組重構的開銷很低
(3)其次,像列存儲一樣,RCFile 能夠利用列維度的數據壓縮,並且能跳過不必要的列讀取

 

 上面數據的存儲模式為RCFile,總的文件大小為134.17M

 

ORCFile

  • 存儲方式:數據按行分塊 每塊按照列存儲
  • 壓縮快 快速列存取
  • 效率比rcfile高,是rcfile的改良版本

上面數據的存儲模式為orc模式,同時啟動了snappy的壓縮模式,總的文件大小為34.48M 下面是orc 的snappy壓縮的表結構:

 

 總結:

我們再建設數據倉庫的時候,通常都是一次寫入,多次讀取
存儲文件的大小的關系:
SequenceFile > TextFile > RCfile

TextFile 默認格式,加載速度最快,可以采用Gzip、bzip2等進行壓縮,壓縮后的文件無法split,即並行處理
SequenceFile 壓縮率最低,查詢速度一般,三種壓縮格式NONE,RECORD,BLOCK
RCfile 壓縮率最高,查詢速度最快,數據加載最慢。
orc (snappy壓縮模式) 查詢速度更快

所以在數據倉庫的建設過程當中盡量的使用orc的這種模式再加上壓縮模式。一方面減少磁盤的使用量,一方面可以實現數據的split(分布式計算),實現查詢速度加快。

建立orc的snappy壓縮模式的建表語句如下:

CREATE TABLE IF NOT EXISTS rp_person_house_loan_info
    (
    loan_no varchar(20),
    if_me varchar(5)
    
    )
 ROW FORMAT DELIMITED
 FIELDS TERMINATED BY '\t'
 STORED AS orc tblproperties ("orc.compress"="SNAPPY");

對於其他的模式啟動壓縮的方式:

在插入之前對表的壓縮模式進行設定
set
hive.exec.compress.output=true; set mapred.output.compress=true; set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec; set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM