数据仓库能支持多种文件格式,如hive可以支持textfile,RCFile,SequenceFile,ORC,Parquet格式等,我们使用最多的是textfile,SequenceFile,ORC以及parquet格式。
- TextFile
TextFile的特点就是行存储,是hive默认存储格式,可以使用任意分隔符,不做压缩,所以磁盘开销大,但可以结合snappy,gzip等使用,此外TextFile不支持文件切割 - SequenceFile
SequenceFile是一种二进制存储结构,直接将<Key,Value>键值对序列化到文件中,所以适合处理小文件,将小文件合并成一个大的SequenceFile文件
上图可以看出,SequenceFile由header和Record组成,提供两种压缩方式,一种是基于Record的压缩,另一种是块压缩 - ORC
ORC中文是优化的列式存储,列式存储的好处就是可以按字段进行分析,做过数据挖掘或者使用过pandas的能体会到通常我们只需要分析一个或者某几个字段的数据,不是全表数据,列式存储方便这样查询
ORC格式的文件由多个Stripe组成,Stripe由多个Row的数据组成(知道这个就行了),其余的像Index Data存储数据的统计信息和索引信息,Stripe Footer是保存文件的文件目录。
ORC的结构很方便过滤掉不需要的数据,依靠三种级别的索引,第一是文件索引,第二是Stripe索引,第三十Row索引 - Parquet
Parquet也是列式存储,也是适合大数据场景下的OLAP
Parquet格式由一个个行组构成,一个行组可以由多个列块组成(每一列都是一个列块),每个列快由可以分为不同的页,我们只需要读取自己感兴趣的页就可以,这也是与ORC不同的地方,在列的颗粒度下还细分了页的颗粒度,这也是Parquet支持读取嵌套结构的原因。
此外还有一些其他的存储格式,如Avro,Arrow,CarbonData等
标签:存储,数据文件,列式,SequenceFile,Parquet,格式,ORC From: https://www.cnblogs.com/spark-cc/p/16923828.html