TextFile:
Hive默認(rèn)格式,數(shù)據(jù)不做壓縮,磁盤開銷大,數(shù)據(jù)解析開銷大。可結(jié)合Gzip、Bzip2、Snappy等使用(系統(tǒng)自動(dòng)檢查,執(zhí)行查詢時(shí)自動(dòng)解壓),但使用這種方式,hive不會(huì)對(duì)數(shù)據(jù)進(jìn)行切分,從而無法對(duì)數(shù)據(jù)進(jìn)行并行操作。
SequenceFile:
SequenceFile是Hadoop API 提供的一種二進(jìn)制文件,它將數(shù)據(jù)以<key,value>的形式序列化到文件中。這種二進(jìn)制文件內(nèi)部使用Hadoop 的標(biāo)準(zhǔn)的Writable 接口實(shí)現(xiàn)序列化和反序列化。它與Hadoop API中的MapFile 是互相兼容的。Hive 中的SequenceFile 繼承自Hadoop API 的SequenceFile,不過它的key為空,使用value 存放實(shí)際的值,這樣是為了避免MR 在運(yùn)行map 階段的排序過程。
RCFile:
RCFile是Hive推出的一種專門面向列的數(shù)據(jù)格式。 它遵循“先按列劃分,再垂直劃分”的設(shè)計(jì)理念。當(dāng)查詢過程中,針對(duì)它并不關(guān)心的列時(shí),它會(huì)在IO上跳過這些列。需要說明的是,RCFile在map階段從 遠(yuǎn)端拷貝仍然是拷貝整個(gè)數(shù)據(jù)塊,并且拷貝到本地目錄后RCFile并不是真正直接跳過不需要的列,并跳到需要讀取的列, 而是通過掃描每一個(gè)row group的頭部定義來實(shí)現(xiàn)的,但是在整個(gè)HDFS Block 級(jí)別的頭部并沒有定義每個(gè)列從哪個(gè)row group起始到哪個(gè)row group結(jié)束。所以在讀取所有列的情況下,RCFile的性能反而沒有SequenceFile高。
其中textfile為默認(rèn)格式,建表時(shí)不指定默認(rèn)為這個(gè)格式,導(dǎo)入數(shù)據(jù)時(shí)會(huì)直接把數(shù)據(jù)文件拷貝到hdfs上不進(jìn)行處理。SequenceFile,RCFile格式的表不能直接從本地文件導(dǎo)入數(shù)據(jù),數(shù)據(jù)要先導(dǎo)入到textfile格式的表中,然后再從textfile表中用insert導(dǎo)入到SequenceFile,RCFile表中。








暫無數(shù)據(jù)