markdown 列式存储格式-Parquet与ORC

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了markdown 列式存储格式-Parquet与ORC相关的知识,希望对你有一定的参考价值。

- [Parquet与ORC:高性能列式存储格式](https://blog.csdn.net/yu616568/article/details/51868447)
- [Hive:ORC File Format存储格式详解](https://www.iteblog.com/archives/1014.html)
- [处理海量数据:列式存储综述(存储篇)](https://zhuanlan.zhihu.com/p/35622907)

## 行式存储与列式存储对比

行式存储是面向OLTP的, 因为OLTP涉及大量的update操作, 并且查询的时候通常是将row作为一个整体来带出. 所以一次访问一行是很合理的.

但是在OLAP的场景下, 通常表的数据是十分庞大的, 并且每次查询通常只需要用到其中的几个列, 这时候如果使用行式存储是不合适的.

## 列式存储

列式存储实际上既进行了纵向分片, 又进行了横向分片.

列式存储的优点:

- 通过统计信息, 方便进行基于列的谓词下推.
- 由于列成员是同构的且存储在同一个列块中, 可以针对不同的数据类型采用更高效的压缩算法.
- 由于列成员的同构性, 可以使用更加合适的CPU pipeline编码方式, 减小CPU缓存失效.

### Parquet

适用于表达复杂的结构嵌套结构, Protobuf等都适用于使用Parquet进行存储.

首先横向分片, 变为Row Group, 默认一个Row Group. Row Group是Hadoop Mapper使用的最小单位.

然后纵向分片, 将Row Group又分为了列块, 每个列存储在单独的列块中.

列块最底层是页.

### ORC

在Row Group\(stripe\)的基础上有Row Group Index, 包含stripe的min, max值, 方便进行谓词下推.

还有Bloom Fliter Index, 能够在'='情况判断时进行快速过滤.

以上是关于markdown 列式存储格式-Parquet与ORC的主要内容,如果未能解决你的问题,请参考以下文章

网易视频云:新一代列式存储格式Parquet

Parquet学习总结

parquet 简介(转)

Parquet性能测试之项目实践中应用测试

一文讲透大数据列存标准格式:Parquet

hive储存与压缩