TextFile: 默認格式,數據不做壓縮,磁盤開銷大,數據解析開銷大。可結合Gzip、Bzip2使用,但使用Gzip這種方式,hive不會對數據進行切分,從而無法對數據進行並行操作。
SequenceFile: SequenceFile是Hadoop API 提供的一種二進制文件,它將數據以<key,value>的形式序列化到文件中。這種二進制文件內部使用Hadoop 的標准的Writable 接口實現序列化和反序列化。它與Hadoop API中的MapFile 是互相兼容的。Hive 中的SequenceFile 繼承自Hadoop API 的SequenceFile,不過它的key為空,使用value 存放實際的值, 這樣是為了避免MR 在運行map 階段的排序過程。
RCFile: RCFile是Hive推出的一種專門面向列的數據格式。 它遵循“先按列划分,再垂直划分”的設計理念。當查詢過程中,針對它並不關心的列時,它會在IO上跳過這些列。需要說明的是,RCFile在map階段從 遠端拷貝仍然是拷貝整個數據塊,並且拷貝到本地目錄后RCFile並不是真正直接跳過不需要的列,並跳到需要讀取的列, 而是通過掃描每一個row group的頭部定義來實現的,但是在整個HDFS Block 級別的頭部並沒有定義每個列從哪個row group起始到哪個row group結束。所以在讀取所有列的情況下,RCFile的性能反而沒有SequenceFile高。
ORCfile: ORC是列式存儲,有多種文件壓縮方式,並且有着很高的壓縮比。文件是可切分(Split)的。因此,在Hive中使用ORC作為表的文件存儲格式,不僅節省HDFS存儲資源,查詢任務的輸入數據量減少,使用的MapTask也就減少了。提供了多種索引,row group index、bloom filter index。ORC可以支持復雜的數據結構(比如Map等)