Apache Hive支持Apache Hadoop中使用的幾種熟悉的文件格式,如
TextFile,RCFile,SequenceFile,AVRO,ORC和Parquet格式。
Cloudera Impala也支持這些文件格式。 在建表時使用
STORED AS (
TextFile|RCFile|SequenceFile|AVRO|ORC|Parquet
)來指定存儲格式
。
TextFile每一行都是一條記錄,每行都以換行符(\ n)結尾。數據不作壓縮,磁盤開銷大,數據解析開銷大。可結合Gzip、Bzip2使用(系統自動檢查,執行查詢時自動解壓),但使用這種方式,hive不會對數據進行切分,從而沒法對數據進行並行操做。
SequenceFile是Hadoop API提供的一種二進制文件支持,其具備使用方便、可分割、可壓縮的特色。支持三種壓縮選擇:NONE, RECORD, BLOCK。 Record壓縮率低,通常建議使用BLOCK壓縮。
RCFile是一種行列存儲相結合的存儲方式。首先,其將數據按行分塊,保證同一個record在一個塊上,避免讀一個記錄須要讀取多個block。其次,塊數據列式存儲,有利於數據壓縮和快速的列存取。
AVRO是開源項目,爲Hadoop提供數據序列化和數據交換服務。您能夠在Hadoop生態系統和以任何編程語言編寫的程序之間交換數據。Avro是基於大數據Hadoop的應用程序中流行的文件格式之一。
ORC文件表明了優化排柱狀的文件格式。ORC文件格式提供了一種將數據存儲在Hive表中的高效方法。這個文件系統其實是爲了克服其餘Hive文件格式的限制而設計的。Hive從大型表讀取,寫入和處理數據時,使用ORC文件能夠提升性能。
Parquet是一個面向列的二進制文件格式。Parquet對於大型查詢的類型是高效的。對於掃描特定表格中的特定列的查詢,Parquet特別有用。Parquet桌子使用壓縮Snappy,gzip;目前Snappy默認。編程
存儲格式對比app
Parquet與ORC對比編程語言
總結:若是僅僅是在HIve中存儲和查詢,建議使用ORC格式,若是在Hive中存儲,而使用Impala查詢,建議使用Parquetoop