Hive中的文件格式
1-TEXTFILE
- 文本格式压彭,Hive的默認(rèn)格式睦优,數(shù)據(jù)不壓縮,磁盤開銷大哮塞、數(shù)據(jù)解析開銷大刨秆。
- 對應(yīng)的hive API為:org.apache.hadoop.mapred.TextInputFormat和org.apache.hive.ql.io.HiveIgnoreKeyTextOutputFormat;
- 可結(jié)合Gzip忆畅、Bzip2使用(系統(tǒng)自動檢查衡未,執(zhí)行查詢時自動解壓),但是使用這種方式家凯,hive不會對數(shù)據(jù)進(jìn)行切分缓醋,從而無法對數(shù)據(jù)進(jìn)行并行操作
2-SequenceFile
- Hadoop提供的二進(jìn)制文件,Hadoop支持的標(biāo)準(zhǔn)文件绊诲;
- 數(shù)據(jù)直接序列化到文件中送粱,SequenceFile文件不能直接查看,可以通過Hadoop fs -text查看掂之;
- SequenceFile具有使用方便抗俄、可分割、可壓縮世舰、可進(jìn)行切片动雹,壓縮支持NONE、RECORD跟压、BLOCK(優(yōu)先)胰蝠;
- 對應(yīng)hive API:org.apache.hadoop.mapred.SequenceFileInputFormat和org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
3-RCFILE
- rcfile是一種行列存儲相結(jié)合的存儲方式,先將數(shù)據(jù)按行進(jìn)行分塊再按列式存儲震蒋,保證同一條記錄在一個塊上茸塞,避免讀取多個塊,有利于數(shù)據(jù)壓縮和快速進(jìn)行列存儲查剖;
- 對應(yīng) hive API為:org.apache.hadoop.hive.ql.io.RCFileInputFormat和org.apache.hadoop.hive.ql.io.RCFileOutputFormat
4-orcfile
- orcfile式對rcfile的優(yōu)化钾虐,可以提高h(yuǎn)ive的讀寫、數(shù)據(jù)處理性能梗搅、提供更高的壓縮效率禾唁;
- 優(yōu)點:
- 每個task只輸出單個文件,減少namenode負(fù)載无切;
- 支持各種復(fù)雜的數(shù)據(jù)類型,比如:datetime丐枉,decima以及復(fù)雜類型struct哆键、list、map瘦锹;
- 文件中存儲了一些輕量級的索引數(shù)據(jù)籍嘹;
- 基于數(shù)據(jù)類型的塊模式壓縮:integer類型的列用行程長度編碼闪盔,string類型的列使用字典編碼;
- 用多個相互獨立的recordReaders并行讀相同的文件
- 無需掃描markers即可分割文件
- 綁定讀寫所需內(nèi)存
- metadata存儲用protocol buffers辱士,支持添加和刪除列
5-parquet
- Parquet也是一種列式存儲泪掀,同時具有很好的壓縮性能;同時可以減少大量的表掃描和反序列化的時間颂碘。
總結(jié)
- textfile 存儲空間消耗比較大异赫,并且壓縮的text 無法分割和合并 查詢的效率最低,可以直接存儲,加載數(shù)據(jù)的速度最高头岔;
- sequencefile 存儲空間消耗最大,壓縮的文件可以分割和合并 查詢效率高塔拳,需要通過text文件轉(zhuǎn)化來加載;
- orcfile, rcfile存儲空間最小峡竣,查詢的效率最高 靠抑,需要通過text文件轉(zhuǎn)化來加載,加載的速度最低适掰;
- parquet格式是列式存儲颂碧,有很好的壓縮性能和表掃描功能;
SequenceFile,ORCFile(ORC)类浪,rcfile格式的表不能直接從本地文件導(dǎo)入數(shù)據(jù)载城,數(shù)據(jù)要先導(dǎo)入到textfile格式的表中,然后再從textfile表中導(dǎo)入到SequenceFile,ORCFile(ORC)戚宦,rcfile表中个曙。
Hive支持的壓縮格式
-
Hive支持的壓縮格式為Gzip、Bzip2受楼、lzo垦搬、snappy
壓縮特點.jpg