- TEXTFILE
- SEQUENCEFILE
- AVRO
- RCFILE
- ORC
- PARQUET
1 分类
面向行的:
TEXTFILE、SEQUENCEFLIE、AVRO
面向列的
RCFILE、ORC、PARQUET
2 两种分类的区别
面向行的不是最佳的文件格式,因为即便只查询一列数据,使用面向行存储的文件格式的表都要读取完整的一行数据。
面向列的可以很好的解决面向行存储的问题
3 每种文件格式的说明:
1 TEXTFILE
- 创建表的默认存储格式
- 存储为文本文件,可以被分割和并行处理
- 可以使用压缩:GZIP 、LZO、SNAPPY
2 SEQUENCEFILE
- key/value对的二进制存储格式
- 优点: 比textfile有更好的压缩,支持块压缩
3 AVRO
- 二进制格式文件
- 是一个序列化和反序列化的框架
4 RCFILE
- 先将表分为几个行组
- 对每个行组内的数据进行按列存储,每列数据都是分开存储,即先水平划分,再垂直划分
5 ORC
- 加强版的RCFILE,默认存储块256m
6 PARQUET
- 列式存储的文件格式,与ORC类似
- parquet支持的生态更广
hive表进行压缩是常见的优化手段,一些存储方式自带压缩选择。
压缩的优点:
减少存储磁盘空间,降低单节点的磁盘IO。由于压缩后的数据占用的带宽更少,因此可以加快数据在Hadoop集群流动的速度。
压缩的缺点:
需要花费的时间/CPU做数据的压缩和解压缩计算。
支持压缩后分割的方式优点:
可以分割的格式允许单一文件由多个mapper程序处理,可以更好的并行化。
1 SEQUENCEFILE 压缩选择:
NONE、RECORD、BLOCK
注:RECORD压缩率低,一般建议使用BLOCK压缩
2 ORC 压缩选择:
NONE、ZLIB(默认)、SNAPPY
3 PARQUET压缩选择:
SNAPPY(默认),一般使用impala查询引擎时,选择该压缩类型



