问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Parquet文件格式详解(含行、列式存储区别)

创作时间:
作者:
@小白创作中心

Parquet文件格式详解(含行、列式存储区别)

引用
CSDN
1.
https://blog.csdn.net/weixin_48935611/article/details/139194289

Parquet是一种列式存储格式,旨在高效地存储和处理大规模数据集。它被设计用于在大数据生态系统中进行数据存储和分析,如Apache Hadoop和Apache Spark。本文将详细介绍Parquet文件格式的特点,并对比行式存储和列式存储的差异。

行式存储 vs 列式存储

在了解Parquet文件格式之前,先来对比一下行式存储和列式存储的特点:

(1)行式存储

  • 行式存储将数据按行存储在磁盘上,即将同一行的所有字段值存储在一起。
  • 适用于OLTP(在线事务处理)场景,如数据库系统,其中通常需要快速地执行插入、更新和删除操作。
  • 查询时需要读取整行数据,因此在分析性能上可能会受到影响,特别是当查询只涉及部分列时。

(2)列式存储

  • 列式存储将数据按列存储在磁盘上,即将同一列的所有数值存储在一起。
  • 适用于OLAP(在线分析处理)场景,如数据仓库和大数据分析平台,其中通常需要执行复杂的查询和聚合操作。
  • 查询时只需读取所需的列,因此在分析性能上通常比行式存储更高效,特别是当查询只涉及部分列时。

(3)示例

数据集:用户ID、用户名、年龄、性别和所在城市。比较使用行式存储和列式存储时数据的存储方式。

原始数据集:
用户ID 用户名 年龄 性别 城市
1 Alice 30 F New York
2 Bob 35 M London
3 Charlie 25 M Paris
4 Diana 40 F Tokyo

  • 行式存储:
    在行式存储中,数据按行存储在磁盘上,即每一行的数据作为一个整体存储。
    存储方式:
1, Alice, 30, F, New York
2, Bob, 35, M, London
3, Charlie, 25, M, Paris
4, Diana, 40, F, Tokyo
  • 列式存储:
    在列式存储中,数据按列存储在磁盘上,即每一列的数据作为一个整体存储。
    存储方式:
    用户ID 1 2 3 4
    用户名 Alice Bob Charlie Diana
    年龄 30 35 25 40
    性别 F M M F
    城市 New York London Paris Tokyo

  • 对比分析:

  1. 在行式存储中,数据按行存储,因此在查询时需要读取整行数据。
  2. 在列式存储中,数据按列存储,因此在查询时只需要读取所需的列,例如,如果我们只需要查询用户的年龄,那么只需要读取年龄列,而不需要读取其他列,这提高了查询效率。
    在大规模数据集的情况下,列式存储通常比行式存储更有效,特别是对于需要分析大量数据的情况,因为它可以减少磁盘I/O操作,提高查询性能。而Parquet文件格式正是基于列式存储的这些优势而设计的,因此在处理大规模数据集时非常受欢迎。

Parquet文件格式特点

1. 列式存储

Parquet将数据按列存储,而不是按行存储。这意味着每个列的数据被单独存储,而不是整行的数据。这种存储方式有几个优势:

  • 数据压缩效率高:相同类型的数据通常会有更高的重复性,这使得压缩算法在列式存储下更为有效,减少存储空间的占用。
  • 查询效率高:由于查询通常只需要访问特定的列,而不是整行数据,因此可以减少不必要的数据读取,提升查询性能。

2. 分区和row groups

Parquet文件被分割为多个row groups(行组),每个row group包含部分行的数据。

每个row group可以独立于其他row groups进行压缩和存储。这种分割方式提供了以下优势:

  • 更高的并行性:分布式处理框架如Apache Spark可以并行读取和处理不同的row groups,从而加速数据处理任务。
  • 谓词下推:Parquet存储了每个列块的元数据,包括最小值和最大值,查询引擎可以利用这些信息来跳过不满足条件的数据块,减少I/O操作,加快查询执行速度。

3. 模式演进和兼容性

Parquet文件包含数据的模式信息,使得可以方便地向现有的Parquet文件中添加新列或调整数据结构,而无需重写整个数据集。这种模式演进的能力使得Parquet在大数据分析中具有很好的适应性和扩展性。

4. 跨平台和生态系统支持

Parquet是一个开放的文件格式,得到了多种大数据处理平台和工具的支持,包括Apache Hadoop、Apache Spark、Apache Hive等。这使得Parquet成为了通用的数据存储格式,能够无缝地集成到现有的大数据处理生态系统中。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号