博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
parquet文件格式——本质上是将多个rows作为一个chunk,同一个chunk里每一个单独的column使用列存储格式,这样获取某一row数据时候不需要跨机器获取...
阅读量:6430 次
发布时间:2019-06-23

本文共 912 字,大约阅读时间需要 3 分钟。

Parquet是Twitter贡献给开源社区的一个列数据存储格式,采用和Dremel相同的文件存储算法,支持树形结构存储和基于列的访问。Cloudera Impala也将使用Parquet作为底层的存储格式。在很多大数据的应用场景下面,比如电信行业,具有一定规则的数据,字段很多,但是每次查询仅仅针对其中少数的几个字段,这个时候列式存储是极佳的选择。

优势:
使用列式存储,一列的值都是同质的,从而带来了更高的压缩比;对于在hadoop集群上的大数据量来说,使用parquet可以节省大量空间;
可以提高IO性能;在查询的时候,只需要读取关心的列,而不需要将整条记录都读出来进行条件过滤;
由于列数据都是同类型的,从而可以对不同的列采用不同的编码方式来组织存储,提升读写效率,节省空间。
劣势:
不支持update操作(数据写成后不可删除和修改),不支持ACID等

 

 

Parquet文件将数据分为N列,M个RowGroup,每个RowGroup中按照Column进行文件存储。

每个Column中对列的数据话划分为多个Page,每个Page对数据内容进行压缩,默认推荐snappy算法。
Parquet文件写入完毕后会写入File MetaData,File MetaData包含了所有列元数据的起始位置,因此读取列数据时先从中找到感兴趣的列,然后再顺序读取。

 

4-byte magic number "PAR1"
...
...
...
...
File Metadata4-byte length in bytes of file metadata4-byte magic number "PAR1"

 

综合来看,ORCfiel和parquet本质上都是列上存储,大同小异。parquet主要特点是支持嵌套格式,ORCfile主要特点是strips中有轻量级的index data。所以这两种数据存储格式完全是可以相互借鉴融合的。

 

转载地址:http://ranga.baihongyu.com/

你可能感兴趣的文章
Django的信号机制
查看>>
react中create-react-app配置antd按需加载(方法二)
查看>>
最长上升子序列(动态规划递推,LIS)
查看>>
C#的WebBrowser操作frame
查看>>
Windows & RabbitMQ:集群(clustering) & 高可用(HA)
查看>>
linux远程win7教程
查看>>
凸优化
查看>>
MVC3 ef4增删改
查看>>
并查集模板
查看>>
leetcode 371两整数之和
查看>>
python实现二分查找算法
查看>>
Kubernetes的污点和容忍(下篇)
查看>>
[解题报告]10038 - Jolly Jumpers
查看>>
使用samba搭建便利的web开发环境
查看>>
TEST DESIGN TECHNIQUES: AN OVERVIEW
查看>>
线段树模板
查看>>
第94天:CSS3 盒模型详解
查看>>
HDU 2200
查看>>
关于函数参数
查看>>
iOS--Runtime--Method Swizzling
查看>>