Parquet 文件简介steemCreated with Sketch.

in #cn11 months ago

我在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
博客:Parquet 文件简介

Steem Blockchain

Steem 坐火箭🚀!

  • 您可以通过 steem2usdt 交换 STEEM/SBD 到 Tether USDT (波场U, TRC-20)!
  • 您可以通过 steem2trx 交换 STEEM/SBD 到 波场 TRX (TRON)!
  • 您可以通过 steem2bts 交换 STEEM/SBD 到 比特股 BTS (BitShares)!
  • SteemYY 免费注册 STEEM 帐户!

Sort:  

!ask what is parquet files?



Parquet files are a columnar storage format used in the Hadoop ecosystem. They store data in columns, which stores less data and allows for faster read/write times. Parquet files are also optimized for compression, making them ideal for storing large amounts of data.


command: !ask is powered by witness @justyy and his contributions are: SteemYY.com
More Commands are coming!. !ask is currently based on ChatGPT-3.5

!test !thumbup

Hello @ericandryan! You are Delightful!


command: !thumbup is powered by witness @justyy and his contributions are: SteemYY.com
More Commands are coming!

Coin Marketplace

STEEM 0.16
TRX 0.16
JST 0.031
BTC 58954.91
ETH 2508.61
USDT 1.00
SBD 2.45