Parquet文件结构笔记
2016-06-06 22:24
459 查看
Parquet是面向分析型业务的列式存储格式,由Twitter和Cloudera合作开发,2015年5月从Apache的孵化器里毕业成为Apache顶级项目,那么这里就总结下Parquet数据结构到底是什么样的呢?
一个Parquet文件是由一个header以及一个或多个block块组成,以一个footer结尾。header中只包含一个4个字节的数字PAR1用来识别整个Parquet文件格式。文件中所有的metadata都存在于footer中。footer中的metadata包含了格式的版本信息,schema信息、key-value paris以及所有block中的metadata信息。footer中最后两个字段为一个以4个字节长度的footer的metadata,以及同header中包含的一样的PAR1。
读取一个Parquet文件时,需要完全读取Footer的meatadata,Parquet格式文件不需要读取sync markers这样的标记分割查找,因为所有block的边界都存储于footer的metadata中(因为metadata的写入是在所有blocks块写入完成之后的,所以吸入操作包含的所有block的位置信息都是存在于内存直到文件close)
这里注意,不像sequence files以及Avro数据格式文件的header以及sync markers是用来分割blocks。Parquet格式文件不需要sync markers,因此block的边界存储与footer的meatada中。
![](https://images2015.cnblogs.com/blog/820234/201606/820234-20160606221152449-1498604387.jpg)
在Parquet文件中,每一个block都具有一组Row group,她们是由一组Column chunk组成的列数据。继续往下,每一个column chunk中又包含了它具有的pages。每个page就包含了来自于相同列的值.Parquet同时使用更紧凑形式的编码,当写入Parquet文件时,它会自动基于column的类型适配一个合适的编码,比如,一个boolean形式的值将会被用于run-length encoding。
另一方面,Parquet文件对于每个page支持标准的压缩算法比如支持Snappy,gzip以及LZO压缩格式,也支持不压缩。
Parquet格式的数据类型:
![](https://images2015.cnblogs.com/blog/820234/201606/820234-20160607105209746-2133980677.jpg)
参考: 《Hadoop:The Definitive Guide, 4th Edition》
一个Parquet文件是由一个header以及一个或多个block块组成,以一个footer结尾。header中只包含一个4个字节的数字PAR1用来识别整个Parquet文件格式。文件中所有的metadata都存在于footer中。footer中的metadata包含了格式的版本信息,schema信息、key-value paris以及所有block中的metadata信息。footer中最后两个字段为一个以4个字节长度的footer的metadata,以及同header中包含的一样的PAR1。
读取一个Parquet文件时,需要完全读取Footer的meatadata,Parquet格式文件不需要读取sync markers这样的标记分割查找,因为所有block的边界都存储于footer的metadata中(因为metadata的写入是在所有blocks块写入完成之后的,所以吸入操作包含的所有block的位置信息都是存在于内存直到文件close)
这里注意,不像sequence files以及Avro数据格式文件的header以及sync markers是用来分割blocks。Parquet格式文件不需要sync markers,因此block的边界存储与footer的meatada中。
![](https://images2015.cnblogs.com/blog/820234/201606/820234-20160606221152449-1498604387.jpg)
在Parquet文件中,每一个block都具有一组Row group,她们是由一组Column chunk组成的列数据。继续往下,每一个column chunk中又包含了它具有的pages。每个page就包含了来自于相同列的值.Parquet同时使用更紧凑形式的编码,当写入Parquet文件时,它会自动基于column的类型适配一个合适的编码,比如,一个boolean形式的值将会被用于run-length encoding。
另一方面,Parquet文件对于每个page支持标准的压缩算法比如支持Snappy,gzip以及LZO压缩格式,也支持不压缩。
Parquet格式的数据类型:
![](https://images2015.cnblogs.com/blog/820234/201606/820234-20160607105209746-2133980677.jpg)
参考: 《Hadoop:The Definitive Guide, 4th Edition》
相关文章推荐
- Android用户交互概述(UI)——翻译自developer.android.com
- UITabBarItem显示真实自定义图片
- 194_自定义FastJsonRequest
- TrueCrypt 变废为宝-银行U盾
- iOS-监听UITextField值改变事件
- 经典排序算法 - 快速排序Quick_sort
- C#之四十七 扑克牌 QuickSpark
- 加密软件TrueCrypt推荐,也许是最好的加密软件
- C#之四十七 扑克牌 QuickSpark
- C#之四十七 扑克牌 QuickSpark
- 使用ET199加密锁存储TrueCrypt的密钥文件
- xcode UIButton创建、监听按钮点击、自定义按钮 、状态 、内边距
- xcode UIImageView创建、图片加载、 音频文件播放、 延迟调用
- java中queue的使用
- xcode UILabel创建和隐藏
- iOS开发中UITableView和UITableViewCell的几种样式
- xcode UIView常用方法属性动画
- IOS UIButton &UIImageView 之间的区别
- 自定义UIView实现了动态心率图和血压器
- HDU 1711 Number Sequence