parquet列式存储格式

一、历史背景

Parquet是Hadoop生态圈中主流的列式存储格式,它使用 Google 的 Dremel 论文中概述的技术,列式存储嵌套的数据结构(传说中3秒查询1PB的数据)。最早是由Twitter和Cloudera合作开发,当时Twitter的日增压缩的数据量达到100TB+,存储在HDFS上,他们会使用多种计算框架(例如MapReduce、Hive、Pig等)对这些数据做分析和挖掘;日志结构是复杂的嵌套数据类型,例如一个典型的日志schema有87列,嵌套了7层。所以需要设计一种列式存储格式,既能支持关系型数据,又能支持复杂的嵌套类型的数据,同时能够适配多种数据处理框架。于是Parquet第一个版本- Apache Parquet 1.0 – 在 2013 年 7 月发布。直到2015年5月开始从Apache孵化器里毕业成为Apache顶级项目。

有这样一句话流传:如果说HDFS是大数据时代文件系统的事实标准、Parquet就是大数据时代存储格式的标准。

二、简单介绍

先简单介绍下:

Parquet是一种支持嵌套结构的列式存储格式

非常适用于OLAP场景,实现按列存储和扫描

诸如Parquet这种列式存储,特点或优势主要体现在以下2个方面:

1、更高的压缩比

列存使得更容易对每个列使用高效的压缩和编码,降低磁盘空间。

2、更小的io操作

使用映射下推和谓词下推,只读取需要的列,跳过不满足条件的列,能够减少不必要的数据扫描,带来性能提升,并在表字段比较多的时候更加明显。

关于映射下推和谓词下推:

映射下推,这是列存最突出的优势,它是指在获取数据时只需要扫描需要的列,不用全部扫描。比如sql中的按列查询。

谓词下推,是指将一些过滤条件尽可能的在最底层执行以减少结果集。谓词就是指这些过滤条件,即返回boolean:true和false的表达式,比如sql中的大于、小于、等于、Like、is null等。

三、Parquet项目概述

Parquet是与语言无关,而且不与任何一种数据处理框架绑定在一起,适配多种语言和组件,能够与Parquet适配的组件:

查询引擎:包括Hive、Presto、Impala、Pig、Drill、Tajo、HAWQ、IBM Big SQL等,

计算框架:包括MapReduce,Spark,CassCading、Crunch、Scalding、Kite等,

数据模型:包括Avro、Thrift、Protocol Buf

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sun897827804

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值