Hive的文件存儲格式: textFile textFile為預設格式 存儲方式:行存儲 缺點:磁碟開銷大;數據解析開銷大;壓縮的text文件,hive無法進行合併和拆分 sequencefile 二進位文件,以<key,value>的形式序列化到文件中 存儲方式:行存儲 優點:可分割、壓縮,一般選 ...
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來定義輸入輸出格式。