Hadoop 列式存储引擎

16 篇文章 0 订阅

相比传统的行式存储引擎,列式存储引擎具有更高的压缩比,更少的IO操作而备受青睐(注:列式存储不是万能高效的,很多场景下行式存储仍更加高效),尤其是在数据列(column)数很多,但每次操作仅针对若干列的情景,列式存储引擎的性价比更高。

在互联网大数据应用场景下,大部分情况下,数据量很大且数据字段数目很多,但每次查询数据只针对其中的少数几行,这时候列式存储是极佳的选择,目前在开源实现中,最有名的列式存储引擎是Parquet和ORC,在最近一年内,它们都晋升为Apache顶级项目,可见它们的重要性。本文尝试比较这两种存储引擎

我们常见的列式存储引擎有: Parquet, RCFile, ORCFile.

众所周知,RCFile 是Hive 专用数据存储格式,它是由 Facebook 发布的基于行列混合存储的数据格式。
ORC(OptimizedRC File)存储源自于RC(RecordColumnar File)这种存储格式,RC是一种列式存储引擎,它对schema演化(修改schema需要重新生成数据)支持较差,而ORC是对RC改进,但它仍对schema演化支持较差, 主要是在压缩编码,查询性能方面做了优化。RC/ORC最初是在 Hive 中得到使用,最后发展势头不错,独立成一个单独的项目。Hive 1.x版本对事务和update操作的支持,便是基于ORC实现的(其他存储格式暂不支持)。ORC发展到今天,已经具备一些非常高级的 feature,比如支持 update 操作,支持ACID,支持 struct,array 复杂类型。

你可以使用复杂类型构建一个类似于 parquet 的嵌套式数据架构,但当层数非常多时,写起来非常麻烦和复杂,而 parquet 提供的 schema 表达方式更容易表示出多级嵌套的数据类型。Parquet 存储格式将会在后续有专题进行介绍

先不说废话,发一张图让大家实际感受一下这三种存储引擎的性能:



参考资料: 
RCFile : (翻译于 《Programing Hive》) : http://flyingdutchman.iteye.com/blog/1871025
ORC File : http://www.iteblog.com/archives/1014
Parquet 与 ORC 格式比较: http://dongxicheng.org/mapreduce-nextgen/columnar-storage-parquet-and-orc/




 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值