Hive支持的文件格式和壓縮格式及各自特點


Hive中的文件格式

1-TEXTFILE

  • 文本格式,Hive的默認格式,數據不壓縮,磁盤開銷大、數據解析開銷大。
  • 對應的hive API為:org.apache.hadoop.mapred.TextInputFormat和org.apache.hive.ql.io.HiveIgnoreKeyTextOutputFormat;
  • 可結合Gzip、Bzip2使用(系統自動檢查,執行查詢時自動解壓),但是使用這種方式,hive不會對數據進行切分,從而無法對數據進行並行操作

2-SequenceFile

  • Hadoop提供的二進制文件,Hadoop支持的標准文件;
  • 數據直接序列化到文件中,SequenceFile文件不能直接查看,可以通過Hadoop fs -text查看;
  • SequenceFile具有使用方便、可分割、可壓縮、可進行切片,壓縮支持NONE、RECORD、BLOCK(優先);
  • 對應hive API:org.apache.hadoop.mapred.SequenceFileInputFormat和org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat

3-RCFILE

  • rcfile是一種行列存儲相結合的存儲方式,先將數據按行進行分塊再按列式存儲,保證同一條記錄在一個塊上,避免讀取多個塊,有利於數據壓縮和快速進行列存儲;
  • 對應 hive API為:org.apache.hadoop.hive.ql.io.RCFileInputFormat和org.apache.hadoop.hive.ql.io.RCFileOutputFormat

4-orcfile

  • orcfile式對rcfile的優化,可以提高hive的讀寫、數據處理性能、提供更高的壓縮效率;
  • 優點:
    • 每個task只輸出單個文件,減少namenode負載;
    • 支持各種復雜的數據類型,比如:datetime,decima以及復雜類型struct、list、map;
    • 文件中存儲了一些輕量級的索引數據;
    • 基於數據類型的塊模式壓縮:integer類型的列用行程長度編碼,string類型的列使用字典編碼;
    • 用多個相互獨立的recordReaders並行讀相同的文件
    • 無需掃描markers即可分割文件
    • 綁定讀寫所需內存
    • metadata存儲用protocol buffers,支持添加和刪除列

5-parquet

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

總結

  • textfile 存儲空間消耗比較大,並且壓縮的text 無法分割和合並 查詢的效率最低,可以直接存儲,加載數據的速度最高;
  • sequencefile 存儲空間消耗最大,壓縮的文件可以分割和合並 查詢效率高,需要通過text文件轉化來加載;
  • orcfile, rcfile存儲空間最小,查詢的效率最高 ,需要通過text文件轉化來加載,加載的速度最低;
  • parquet格式是列式存儲,有很好的壓縮性能和表掃描功能;

SequenceFile,ORCFile(ORC),rcfile格式的表不能直接從本地文件導入數據,數據要先導入到textfile格式的表中,然后再從textfile表中導入到SequenceFile,ORCFile(ORC),rcfile表中。

Hive支持的壓縮格式

  • Hive支持的壓縮格式為Gzip、Bzip2、lzo、snappy


     
    壓縮特點.jpg


免責聲明!

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



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