20200710 大数据文件格式揭秘


大数据文件格式揭秘

textfile

文件存储就是正常的文本格式,将表中的数据在hdfs上 以文本的格式存储,下载后可以直接查看,也可以使用cat命令查看。
优点弊端:

  1. 行存储使用textfile存储文件默认每一行就是一条记录,
  2. 可以使用任意的分隔符进行分割。
  3. 但无压缩,所以造成存储空间大。可结合Gzip、Bzip2、Snappy等使用(系统自动检查,执行查询时自动解压),但使用这种方式,hive不会对数据进行切分,从而无法对数据进行并行操作。

rcfile

在hdfs上将表中的数据以二进制格式编码,并且支持压缩。下载后的数据不可以直接可视化。
RCFile全称Record Columnar File,列式记录文件,是一种类似于SequenceFile的键值对(Key/Value Pairs)数据文件。
在当前的基于Hadoop系统的数据仓库中,数据存储格式是影响数据仓库性能的一个重要因素。Facebook于是提出了集行存储和列存储的优点于一身的RCFile文件存储格式。
为了提高存储空间利用率,Facebook各产品线应用产生的数据从2010年起均采用RCFile结构存储,按行存储(SequenceFile/TextFile)结构保存的数据集也转存为RCFile格式。
此外,Yahoo公司也在Pig数据分析系统中集成了RCFile,RCFile正在用于另一个基于Hadoop的数据管理系统Howl(http://wiki.apache.org/pig/Howl)。
而且,根据Hive开发社区的交流,RCFile也成功整合加入其他基于MapReduce的数据分析平台。有理由相信,作为数据存储标准的RCFile,将继续在MapReduce环境下的大规模数据分析中扮演重要角色。
优点弊端:

  1. 行列混合的存储格式,基于列存储。
  2. 因为基于列存储,列值重复多,所以压缩效率高。
  3. 磁盘存储空间小,io小。

orcfile

ORC File,它的全名是Optimized Row Columnar (ORC) file,其实就是对RCFile做了一些优化。据官方文档介绍,这种文件格式可以提供一种高效的方法来存储Hive数据。它的设计目标是来克服Hive其他格式的缺陷。运用ORC File可以提高Hive的读、写以及处理数据的性能

优点弊端:

  1. 由Hadoop中RC files 发展而来,比RC file更大的压缩比,和更快的查询速度
  2. Schema 存储在footer中
  3. 不支持schema evolution
  4. 支持事务(ACID)
  5. 为hive而生,在许多non-hive MapReduce的大数据组件中不支持使用
  6. 高度压缩比并包含索引

parquet

优点弊端:

  1. 与ORC类似,基于Google dremel
  2. Schema 存储在footer
  3. 列式存储
  4. 高度压缩比并包含索引
  5. 相比ORC的局限性,parquet支持的大数据组件范围更广

sequencefile

SequenceFile是Hadoop API提供的一种二进制文件支持,其具有使用方便、可分割、可压缩的特点。
SequenceFile支持三种压缩选择:none,record,block。Record压缩率低,一般建议使用BLOCK压缩。

Avro

优点弊端:

  1. 主要为行存储
  2. 设计的主要目标是为了满足schema evolution
  3. schema和数据保存在一起

比较

  1. 行式存储or列式存储:Parquet和ORC都以列的形式存储数据,而Avro以基于行的格式存储数据。 就其本质而言,面向列的数据存储针对读取繁重的分析工作负载进行了优化,而基于行的数据库最适合于大量写入的事务性工作负载。
  2. 压缩率:基于列的存储区Parquet和ORC提供的压缩率高于基于行的Avro格式。
  3. 可兼容的平台:ORC常用于Hive、Presto;Parquet常用于Impala、Drill、Spark、Arrow;Avro常用于Kafka、Druid。

测试

存储格式 ORC Sequencefile Parquet RCfile Avro
数据压缩后大小 1.8G 67.0G 11G 63.8G 66.7G
存储耗费时间 535.7s 625.8s 537.3s 543.48 544.3
SQL查询响应速度 19.63s 184.07s 24.22s 88.5s 281.65s
  1. 在压缩存储时间上,除Sequencefile外基本都相差无几。

  2. 数据压缩比例上ORC最优,相比textfile节省了50倍磁盘空间,parquet压缩性能也较好。

  3. SQL查询速度而言,ORC与parquet性能较好,远超其余存储格式。

综合上述各种性能指标,建议工作中原始日志写入hive的存储格式都采用ORC或者parquet格式,这和目前主流的做法一致。

https://blog.csdn.net/weixin_36714575/article/details/80091578

拓展阅读

https://blog.csdn.net/m0_37657725/article/details/98354168


文章作者: Callable
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Callable !
评论
  目录