Hive表的幾種存儲格式


Hive的文件存儲格式:

  • textFile

    textFile為默認格式

    存儲方式:行存儲    

    缺點:磁盤開銷大;數據解析開銷大;壓縮的text文件,hive無法進行合並和拆分

  • sequencefile

    二進制文件,以<key,value>的形式序列化到文件中

    存儲方式:行存儲

    優點:可分割、壓縮,一般選擇block壓縮,與hadoop api中的mapfile是互相兼容的。

  • Rcfile

    存儲方式:數據按行分塊 每塊按照列存儲

    壓縮快 快速列存取

    讀記錄盡量涉及到的block最少

    讀取需要的列只需要讀取每個row group 的頭部定義。

    讀取全量數據的操作 性能可能比sequencefile沒有明顯的優勢

  • ORC

    存儲方式:數據按行分塊 每塊按照列存儲

    壓縮快 快速列存取

    效率比rcfile高,是rcfile的改良版本

    官網介紹:

    The Optimized Row Columnar (ORC) file format provides a highly efficient way to store Hive data. It was designed to overcome limitations of the other Hive file formats. Using ORC files improves performance when Hive is reading, writing, and processing data.

    ORC實際上是在RC文件存儲格式做了一些優化,它的主要優點有:
      (1)、每個task只輸出單個文件,這樣可以減少NameNode的負載;
      (2)、支持各種復雜的數據類型,比如: datetime, decimal, 以及一些復雜類型(struct, list, map, and union);
      (3)、在文件中存儲了一些輕量級的索引數據;
      (4)、基於數據類型的塊模式壓縮:a、integer類型的列用行程長度編碼(run-length encoding);b、String類型的列用字典編碼(dictionary encoding);
      (5)、用多個互相獨立的RecordReaders並行讀相同的文件;
      (6)、無需掃描markers就可以分割文件;
      (7)、綁定讀寫所需要的內存;
      (8)、metadata的存儲是用 Protocol Buffers的,所以它支持添加和刪除一些列。

  • 自定義格式

    用戶可以通過實現inoutformat和outputformat來定義輸入輸出格式。

 

 

 

 


免責聲明!

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



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