什么是 Apache Parquet?

在桥梁下拍照

作者

Annie Badman

Staff Writer

IBM Think

Matthew Kosinski

Staff Editor

IBM Think

什么是 Apache Parquet?

Apache Parquet 是一种开源列式存储格式,用于高效存储、管理和分析大型数据集。与基于行的存储格式(如 CSV 或 JSON)不同,Parquet 按列组织数据以提高查询性能并降低数据存储成本。

组织使用不同的文件格式来满足其他数据需求。许多传统格式以行组织数据,并针对简单数据传输和可读性进行了优化。

Parquet 采用了一种完全不同的方法。它将类似的数据类型分组到列中。这种列式结构有助于改变组织进行大规模分析的方式,实现卓越的压缩和有针对性的数据访问。

例如,在分析客户交易时,使用 Parquet 的零售数据库可以访问特定列(例如购买日期和金额),而无需加载整个客户记录。这种访问特定列的能力可以减少处理时间和存储成本。

Parquet 格式在 3 个关键领域很有价值:

  • 处理涉及数十亿条记录的复杂查询的分析工作负载。
  • 需要高效存储和快速数据检索的数据湖和数据仓库。
  • 机器学习 (ML) 管道,可分析大型训练数据集中的特定属性。

Parquet 得到广泛采用的另一个原因是它与分布式系统和数据工具兼容,例如 Apache Spark、Apache Hive 和 Apache Hadoop

Apache Parquet 的关键特征

与其他文件格式相比,Parquet 通过 3 个关键功能改变了数据存储和访问方式:

  • 列式存储格式:传统文件格式将数据存储在行中,类似于电子表格条目,但 Parquet 使用列式存储格式。它将类似的数据类型组织到列中,从而允许 Parquet 仅读取相关的列值。这种针对性的方法有助于将查询时间从几小时缩短到几分钟,同时显著降低存储成本。
  • 架构和元数据管理:每个 Parquet 文件都包含一个自描述结构,实际上是其数据结构的蓝图。这些元数据有助于高效查询,并允许数据模型随着业务需求的变化而演变。例如,使用 Parquet 的公司数据库可以添加新的客户属性,而无需重建现有记录。
  • 高效压缩:Parquet 利用复杂的压缩技术自动优化数据存储,这意味着 Parquet 可通过删除不必要的重复信息并以空间效率更高的格式存储数据来减小文件。这种智能数据存储方法有助于确保在不同类型的工作负载中实现最佳存储效率和计算性能。
小球在轨道上滚动的三维设计

最新的 AI 新闻 + 洞察分析

在每周的 Think 时事通讯中,发现专家精选的有关 AI、云等的洞察分析和新闻。 

Apache Parquet 的工作原理

Apache Parquet 系统地将原始数据转换为优化的列式格式,从而显著提高存储效率和查询性能。

以下是 Parquet 处理数据的方式:

1. 数据组织

将数据写入 Parquet 文件时,该格式首先将数据划分为多个行组。每个行组代表数据集的一个独立单元,从而为大规模操作提供并行处理和高效的内存管理。这种分区策略构成了 Parquet 高性能数据访问的基础。

2. 列分块

在每个行组中,Parquet 的组装算法按列而不是按行来重新组织数据。相似的数据类型会分组为列块,从而根据数据的特征进行专门的编码。例如,针对一列日期和一列数值的优化方式是不同的。

3. 压缩和编码

Parquet 采用两阶段优化过程。首先,使用行程长度编码 (RLE) 等编码方案来高效表示重复值,这对于有许多重复条目的列尤为重要。然后,应用 Snappy 或 Gzip 等压缩算法进一步降低存储要求。

4. 元数据生成

该格式可创建全面的元数据,包括文件架构和数据类型、每列的统计信息、行组位置和结构。这些元数据有助于实现高效的查询规划和优化。

5. 查询执行

读取 Parquet 数据时,查询引擎首先查阅元数据来识别相关列。仅从存储空间中读取必要的列块,并根据需要对数据进行解压缩和解码。

Apache Parquet 的优点

Apache Parquet 可以为管理大规模数据操作的组织提供显著的优势。

它的一些优点包括:

查询性能

Parquet 的数据结构可以显著加快分析查询的运行速度。当应用程序需要特定数据时,它们仅访问相关列,从而将查询时间从几小时缩短到几分钟。这种针对性访问使 Parquet 对于大规模运行复杂分析的组织很有价值。

复杂数据处理

与简单格式不同,Parquet 可以高效管理现代应用程序中常见的嵌套数据结构和数组。此功能对于处理复杂数据类型的组织非常有用,例如 Web 分析中的类似 JSON 的结构或来自物联网 (IoT) 设备的传感器数据中的嵌套数组。

存储效率

Parquet 的列式格式从根本上改变了数据的存储和压缩方式。通过将相似的数据类型分组在一起,Parquet 可以对每种类型的数据应用不同的编码算法,从而实现比 CSV 或 JSON 等格式更高的压缩比。

例如,包含数百万笔客户交易的数据集以 CSV 格式存储可能需要数 TB 的存储空间,而以 Parquet 文件存储所需的存储空间则要小得多。

框架集成

现代数据架构通常需要无缝的工具整合,Parquet 通过对主要框架的原生支持来实现这一点。无论团队使用 Python 和 Pandas 进行分析、使用 Java 进行应用程序开发,还是使用 Apache Spark 进行数据处理,Parquet 都能帮助在整个企业保持一致的数据访问方式。

Hadoop 生态系统优化

Parquet 与 Hadoop 的原生集成使其对于大数据处理尤为有效。由于 Parquet 专为 Hadoop 分布式文件系统 (HDFS) 构建,因此在 Hadoop 环境中的性能通常优于传统文件格式。当使用 Parquet 与 Hadoop 时,组织可以更快地运行查询并更高效地存储数据,通常所占用的存储空间只是以前所需存储空间的一小部分。

IBM Storage FlashSystem

IBM Storage FlashSystem:优化 VMware 的成本、简易性和弹性

了解 IBM FlashSystem 如何优化 VMware 环境以实现成本效益、简便性和弹性。本次会议将重点介绍 FlashSystem 如何增强数据安全性、可访问性和性能,使其成为现代 IT 基础架构的理想解决方案。

常见 Parquet 用例

Apache Parquet 可以满足跨行业和应用程序的一系列数据工程需求。

其中最具影响力的一些实施项目包括:

数据湖和仓库

构建数据湖数据仓库的组织通常选择 Parquet 作为其主要存储空间。其高效的压缩和查询性能使其成为存储海量数据的理想选择,同时保持对商业智能和结构化查询语言 (SQL) 查询的快速访问。

例如,使用 Parquet 存储交易数据的零售连锁店可以分析数千家商店的销售模式,同时比传统格式占用更少的存储空间。

分析工作负载

使用 Apache Spark 等框架或 Python 的 Pandas 库的数据科学家和分析师可从 Parquet 在分析查询方面的优化性能中获益。虽然 Avro 等格式通常擅长记录级处理,但许多人发现 Parquet 文件格式对复杂分析特别有效。

例如,金融服务公司可以使用 Parquet 存储市场数据,让分析师能够近乎实时地处理数百万个交易事件并计算风险指标。

ETL 管道

现代数据管道经常在提取、转换和加载 (ETL) 过程中使用 Parquet 作为中间格式或目标格式。它兼容 Apache Spark 等流行框架,并且支持模式演进,对于需要处理不断变化的数据结构的数据工程工作流程非常有价值。

例如,医疗保健组织可以使用 Parquet 高效地将来自多个系统的患者记录转换为统一格式,并使用模式演变功能,在不中断现有流程的情况下自动处理新的数据字段。

Apache Parquet 与其他文件格式的对比

以下是 Parquet 文件格式与其他常见存储格式的对比情况:

Parquet 与 CSV 和 JSON 的对比

CSV 和 JSON 等传统格式以行格式存储数据,非常适合简单数据传输和人类阅读。然而,在处理大规模分析时,读取 Parquet 文件具有显著优势。

即使在查询单列时,CSV 也必须扫描整行,而 Parquet 的列式存储空间可以直接访问特定的数据元素。例如,分析 PB 级数据集中的单个列可能需要读取整个 CSV 文件,而 Parquet 只需访问相关的列块。

Parquet 与 Avro 的对比

Avro 和 Parquet 在数据生态系统中适合不同的用例。Avro 基于行的格式在序列化和流式传输场景方面表现出色,是记录单个事件或事务的理想选择。

相比之下,Parquet 文件格式针对组织需要分析数百万条记录中的特定列的工作负载进行了优化。

例如,电子商务平台可能会使用 Avro 捕获实时订单事件,但会将这些数据转换为 Parquet,以便进行长期存储空间和分析

支持工具和框架的生态系统

Apache Parquet 的优势不仅在于其格式规范,还在于其强大的支持工具和框架生态系统。

Parquet 生态系统中的一些最重要的技术包括:

处理框架

Parquet 可与主要的数据处理框架无缝集成。Apache Spark 提供高性能分析能力,而 Hadoop 支持跨大型集群的分布式处理。

Apache Arrow 可以通过在系统之间实现快速、高效的数据共享和直接数据访问来进一步增强此处理生态系统,这些功能可在使用 Spark 和 Hadoop 等框架时提高性能。

组织可以将这些框架与 Parquet 结合起来,构建从 GB 级到 PB 级的高效数据管道。

编程语言和接口

数据工程师可以通过多个编程接口使用 Parquet。Python 开发人员通常使用 Pandas 进行数据操作,而 Java 应用程序则使用原生 Parquet 库。

云平台

主流云供应商,包括 Amazon Web Services、Google Cloud Platform、Microsoft Azure 和 IBM® Cloud,都提供原生 Parquet 支持。

Parquet 还兼容基于云的数据仓库和查询引擎,例如 Amazon Athena、Google BigQuery 和 IBM® Db2 Warehouse

相关解决方案
IBM Storage DS8000

IBM Storage DS8000 是适用于 IBM zSystems 和 IBM Power 服务器的最快速、最可靠、最安全的存储系统。

深入了解 Storage DS8000
企业级数据存储解决方案

IBM Storage 是一个产品系列,包括数据存储硬件、软件定义存储和存储管理软件。

深入了解数据存储解决方案
硬件和软件支持服务

IBM 为 Web 服务器和数据中心基础设施提供主动支持,可减少停机时间并提高 IT 可用性。

Web 服务器服务
采取后续步骤

从管理混合云环境到确保数据弹性,IBM® Storage 解决方案可支持您从数据中解锁洞察分析,同时维持强大的威胁防护能力。

深入了解数据存储解决方案 产品导览