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中。

  在Parquet文件中,每一个block都具有一组Row group,她们是由一组Column chunk组成的列数据。继续往下,每一个column chunk中又包含了它具有的pages。每个page就包含了来自于相同列的值.Parquet同时使用更紧凑形式的编码,当写入Parquet文件时,它会自动基于column的类型适配一个合适的编码,比如,一个boolean形式的值将会被用于run-length encoding。

  另一方面,Parquet文件对于每个page支持标准的压缩算法比如支持Snappy,gzip以及LZO压缩格式,也支持不压缩。

  Parquet格式的数据类型:

 

参考: 《Hadoop:The Definitive Guide, 4th Edition》

最新文章

  1. ILSpy搜索功能加强版
  2. 17. Word Break && Word Break II
  3. 记一个eclipse 错误 Undefined variable from import: randrange
  4. netstat -ano,查看已占用端口,结束已被占用的端口,ntsd,关闭任务管理器杀不了的进程
  5. delta
  6. CTO的眼界到底有多宽?
  7. 解决将/etc/passwd文件中1000改为0后只能guest进入系统的问题 ||ubuntu下将普通用户权限升级为root用户权限的方法;
  8. 微信小程序开发---各代码文件简介
  9. MySQL 系列(四) 主从复制、读写分离、模拟宕机、备份恢复方案生产环境实战
  10. QuerySet中添加Extra进行SQL查询
  11. Vue自定义class覆盖第三方组件原有样式
  12. Nginx中文url出现404问题
  13. jQuery的事件,动画效果等
  14. Java面向对象-------多态总结
  15. 关于UI设计中的交互软件Axure7.0运用
  16. 重设域管理员密码-window server 2008 R2
  17. Python Django 之 Views HttpRequest HttpReponse
  18. windows server2003+IIS6+PHP5.3.2
  19. firefox_flash_install_on_kali
  20. ActiveX开发

热门文章

  1. Druid(准)实时分析统计数据库——列存储+高效压缩
  2. [整]C#获取天气预报信息(baidu api)包括pm2.5
  3. js对汉字首字母排序
  4. set集合类型
  5. python leetcode 日记--231. Power of Two
  6. python3使用requests登录人人影视网站
  7. 在MacOX下安装python-opencv
  8. 拔靴法--Bootstrap--R语言实现
  9. Python OpenCV —— Arithmetic
  10. magento中如何实现产品图片放大效果