orc格式和parquet格式对⽐
相⽐传统的⽅式存储引擎,列式存储引擎具有更⾼的压缩⽐,更少的IO操作⽽备受青睐,尤其是在数据列column数很多,单词操作仅针对若⼲列的情景,列式存储引擎的性价⽐更⾼.
在互联⽹数据应⽤场景下,⼤部分情况下,数据很⼤且数据字段很多,但每次查询数据只针对其中的少数⼏⾏,这时候列式存储是极佳的选择,⽬前在开源实现中,最有名的列式存储引擎parquet 和orc ,在最近⼀年内,他们都晋升apache顶级项⽬ 可见它的重要性,本⽂尝试⽐较这两种存储引擎.
Apache Parquet
源⾃google Dremel 系统,Parquet 相当⼀Dremel中的数据存储引擎,⽽Apache顶级开源醒⽬ Drill正式Dremel的开源实现.
thriftApache Parquet 最初的设计动机是存储嵌套式数据,⽐如Protocolbuffer thrift json 等 将这类数据存储成列式格式以⽅便对其⾼效压缩和编码,且使⽤更少的IO操作取出需要的数据,也是Parquet 相⽐于ORC的优势,它能透明的将protobuf 和thrift被⼴泛的使⽤的今天,于parquet 进⾏集成,是⼀件⾮常容易和⾃然地事情,除了上述优势外,相⽐于ORC,Parquet 没有太多其他可圈可点的地⽅,⽐如他不⽀持uodate 操作(数据写成后不可修改),不⽀持ACID等.
Apache ORC
ORC(optimizedRC File) 存储源⾃RC(RecordCloimnar File)这种存储格式,RC是⼀种列式存储引擎,对schema演化(修改schema需要重新⽣成数据)⽀持较差,主要是在压缩编码,查询性能⽅⾯做了优化.RC/ORC最初是在Hive中得到使⽤,最后发展势头不错,独⽴成⼀个单独的项⽬.Hive1.xbanbendu版本对事物和update操作的⽀持,便是给予ORC实现的(其他存储格式暂不⽀持).
OCR发展到今天,已经具备⼀些⾮常⾼级的feature,⽐如⽀持update操作,⽀持ACID,⽀持struct,array复杂类型.你可以使⽤复杂类型构建⼀个类似parquet的嵌套式数据架构,但层数⾮常多时,写起来⾮常⿇烦和复杂,⽽parquet提供的schema表达⽅式更容易表⽰出多级嵌套的数据类型.
Parquet 与 ORC对⽐
(图⽚来⾃⽹络)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论