text、RC、Parquet、ORC

  • 数据格式:text、RC、Parquet、ORC
  • 相同大小的原始数据集,转换成相应的格式之后的文件大小:Text > RC > Parquet > ORC

Text/CSV

csv文件不支持块压缩,所以在Hadoop中使用压缩的CSV文件经常会带来很低的读性能。无法存储元数据。新的字段只能追加到所有字段的尾部,并且不能产出已经存在的字段。支持有限的模式演进。

JSON

能够存储元数据。不支持块压缩。第三方的JSON SerDe工具能解决这些问题。全面支持模式演进。

Avro

Avro是Hadoop平台多功能的数据存储格式。它能够存储元数据,还可以把元数据单独存储到一个文件中。支持模式演进。因为Avro可以通过定义一个新的独立的模式文件来重命名、增加、删除和修改字段的数据类型。Avro还是可以切分并支持块压缩的。

Sequence

Sequence存储数据的格式和CSV类似,但它是二进制文件。不存储元数据,如果要进行模式演进只能追加新字段。不支持块压缩。考虑到读取sequence文件的复杂性,所以sequence文件一般作为Hadoop正在运行的中间数据。

RC

Record Columnar的缩写。是Hadoop中第一个列文件格式。能够很好的压缩和快速的查询性能,但是不支持模式演进。通常写操作比较慢,比非列形式的文件格式需要更多的内存空间和计算量。

ORC

Optimized,表示优化的RC文件格式。相比RC能够更好的压缩,能够更快的查询,但还是不支持模式演进。

Parquet

能够很好的压缩,有很好的查询性能,支持有限的模式演进。但是写速度通常比较慢。这中文件格式主要是用在Cloudera Impala上面的。

综上所述,如果要存储MapReduce jobs的中间的计算数据,那么选择Sequence文件是比较理想的。如果需要很高的查询速度,就选择ORC(Hortonworks/Hive)或者Parquet(Cloudera/Impala),需要注意的是,它们一旦创建就不能修改了。如果模式经常变化,就选择Avro数据格式,但是它的查询速度比ORC或者Parquet慢。如果需要从Hadoop中提取数据到一个数据库中,可以考虑选择CSV文件格式。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值