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

本文共 993 字,大约阅读时间需要 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。所以这两种数据存储格式完全是可以相互借鉴融合的。

 

本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/bonelee/p/6547837.html,如需转载请自行联系原作者

你可能感兴趣的文章
strtr+array_combine实现简单的敏感词过滤
查看>>
域名注册商 GoDaddy 被指悄悄在托管网站页面植入脚本
查看>>
微服务架构 - 巧妙获取被墙的Docker镜像
查看>>
java EasyExcel集成及工具类使用
查看>>
服务器故障,报警声介绍
查看>>
生鲜电商“朴朴超市”完成B1轮5500万美元融资,平均送达用时24min ...
查看>>
5G商用道阻且长,加快其进程的最佳路径是什么?
查看>>
HTA免杀
查看>>
【视频分析】大规模机器学习在爱奇艺视频分析理解中的实践
查看>>
如何用纯 CSS 创作锡纸撕开的文字效果
查看>>
服务器禁ping的好处和坏处是什么
查看>>
怎么规划一个零基础学习Unity3D的“方法”或者“流程”?
查看>>
RecyclerView完全解析
查看>>
东南亚科技公司BLUE Mobile完成C轮融资,蚂蚁金服领投、愉悦资本跟投
查看>>
彻底弄懂 Java 线程池原理
查看>>
SAP UI5和微信小程序对比之我见
查看>>
Windows系统云服务器如何使用阿里云镜像一键部署 Web 环境?
查看>>
搭建Git服务器并感受hook使用
查看>>
误删了公司数据库,但我还是活下来了
查看>>
JSON for Modern C++ 3.6.0 发布
查看>>