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储存与压缩