Parquet 文件简介


我在AWS亚麻迅云(S3存储)工作的时候第一次了解到Parquet文件,觉得很神奇。简单来说,就是CSV文件按列来存储。

什么是 Parquet 文件?

Parquet是一个为大数据处理框架(如Apache Hadoop、Apache Spark等)优化的列式存储文件格式。它是Twitter和Cloudera之间的合作产物。作为一种列式格式,与传统的基于行的格式(如CSV或JSON)相比,它具有一些明显的优势:

压缩

由于列式存储的特性,每一列的数据更为同质,这使得它比基于行的存储具有更好的压缩比。例如,存储年龄值的列将只有整数,从而实现有效的压缩

读取效率

对于只需要部分列的分析查询,Parquet只从磁盘读取必要的列。这比读取整行并丢弃不需要的数据更为高效

模式进化

Parquet支持复杂的嵌套数据结构,且其模式可以随时间发展。这意味着您可以在不需要重写整个数据集的情况下添加、删除或修改列。

性能

有效的压缩和通过只读必要列来减少I/O的组合可以极大地加快大型数据集上的分析查询性能。

兼容性

Parquet得到了广泛的数据处理工具的支持,包括但不限于Hadoop、Spark、Presto、Hive、Impala等。

类型支持

Parquet支持丰富的数据结构,包括标准原始数据(整数、浮点数、字符串)和更复杂的类型(列表、映射、结构体)。

压缩算法

Parquet支持多种压缩算法,允许用户选择压缩比和解压速度之间的最佳权衡。

谓词下推

许多处理引擎可以利用Parquet的列式特性来下推某些谓词(过滤器)并只读取必要的数据块,从而进一步优化查询性能

一个Parquet格式的最简单的例子

要更好地理解Parquet格式,与CSV这样的传统基于行的格式对比数据的存储方式是很有用的。

假设你有一个小型的数据集,记录了人们的名字和他们的年龄:

CSV格式:

Name, Age
John, 25
Jane, 30
Doe, 35

在CSV中,数据按行存储。所以当你读取文件时,你会一行一行地读取它。

而在Parquet中,数据会按列存储:

Name:  John, Jane, Doe
Age:   25,   30,   35

有点类似矩阵转置的意思。

这种列式存储意味着,如果你只对查询”Age”列感兴趣,你可以只读取那一列的数据,而不触及”Name”数据。这是一个简单且小的数据集,但你可以想象在处理数十亿行和多列的数据时的效率提升。

实际的Parquet文件是二进制文件,所以你无法像CSV那样在文本编辑器中打开并查看它。你会看到优化的列式存储的二进制数据,以及关于模式、压缩细节等的元数据。

英文:Introduction to Parquet Files

GD Star Rating
loading...
本文一共 770 个汉字, 你数一下对不对.
Parquet 文件简介. (AMP 移动加速版本)
上一篇: 解决单点故障: STEEM区块链ChatGPT机器人的多个读进程
下一篇: 在英国抽血晕倒-英国小姐姐GP全科医生被针头扎到-尿酸偏高

扫描二维码,分享本文到微信朋友圈
e05c49fa6eca8a42d3e7230bd6c94a2b Parquet 文件简介 云计算 程序设计

评论