Parquet 文件简介steemCreated with Sketch.

in cn •  last year 

我在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 帐户!

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  
  ·  last year 

!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
  ·  last year 

!test !thumbup

Hello @ericandryan! You are Delightful!


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