大数据:Hive - ORC 文件存储格式
Parquet文件格式介绍和读写流程
1.TextFile
行存储,直接存储文件,数据量级大,磁盘开销大,
优点:数据操作方便,直接使用put上传数据文件,并且可以直接使用cat 查看HDFS上的文件内容
2.SequenceFile
行存储,含有键值对的二进制文件,数据量级大,对于Hadoop生态系统之外的工具不适用,需要通过text文件转化加载。
优点:可压缩、可分割,优化磁盘利用率和I/O
3.rcfile
行列式存储,先将数据按行分块,同一个record在一个块上,避免读一条记录需要读多个block;然后块数据列式存储
缺点:加载时性能消耗较大,需要通过text文件转化加载;读取全量数据性能低(扫描的数据块多效率低 )
优点:可压缩,高效的列存取;查询效率较高。
4.orcfile
列式存储,优化后的rcfile,存储方式和 rcfile 相同
优点:压缩快,快速列存取 ,效率比rcfile高 ,上层presto查询引擎和orc格式兼容性较好
ORC是列式存储,有多种文件压缩方式,并且有着很高的压缩比。
文件是可切分(Split)的。因此,在Hive中使用ORC作为表的文件存储格式,不仅节省HDFS存储资源,查询任务的输入数据量减少,使用的MapTask也就减少了。
提供了多种索引,row group index、bloom filter index。
ORC可以支持复杂的数据结构(比如Map等)
缺点:
查询引擎不支持 impala 只能用hive查询数据
5.parquet
列存储,Parquet仅仅是一种存储格式,和语言、平台无关,并且不需要和任何一种数据处理框架绑定,通常使用的查询引擎和计算框架都已适配,并且可以很方便的将其它序列化工具生成的数据转换成Parquet格式。
优点:
1.支持多种(几乎大部分)查询引擎,计算框架,数据模型
2.可以使用更多的压缩算法
3.很好的支持: hive,spark,hadoop streaming,mapreduce,impala
4.查询性能和压缩比虽然没有ORC高但是已经达到相对满意的程度了