Hive的文件存儲格式:sql
textFile爲默認格式api
存儲方式:行存儲 ide
缺點:磁盤開銷大;數據解析開銷大;壓縮的text文件,hive沒法進行合併和拆分oop
二進制文件,以<key,value>的形式序列化到文件中性能
存儲方式:行存儲優化
優勢:可分割、壓縮,通常選擇block壓縮,與hadoop api中的mapfile是互相兼容的。編碼
存儲方式:數據按行分塊 每塊按照列存儲spa
壓縮快 快速列存取orm
讀記錄儘可能涉及到的block最少blog
讀取須要的列只須要讀取每一個row group 的頭部定義。
讀取全量數據的操做 性能可能比sequencefile沒有明顯的優點
存儲方式:數據按行分塊 每塊按照列存儲
壓縮快 快速列存取
效率比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來定義輸入輸出格式。