组织使用不同的文件格式来满足其他数据需求。许多传统格式以行组织数据,并针对简单数据传输和可读性进行了优化。
Parquet 采用了一种完全不同的方法。它将类似的数据类型分组到列中。这种列式结构有助于改变组织进行大规模分析的方式,实现卓越的压缩和有针对性的数据访问。
例如,在分析客户交易时,使用 Parquet 的零售数据库可以访问特定列(例如购买日期和金额),而无需加载整个客户记录。这种访问特定列的能力可以减少处理时间和存储成本。
Parquet 格式在 3 个关键领域很有价值:
Parquet 得到广泛采用的另一个原因是它与分布式系统和数据工具兼容,例如 Apache Spark、Apache Hive 和 Apache Hadoop。
与其他文件格式相比,Parquet 通过 3 个关键功能改变了数据存储和访问方式:
Apache Parquet 系统地将原始数据转换为优化的列式格式,从而显著提高存储效率和查询性能。
以下是 Parquet 处理数据的方式:
将数据写入 Parquet 文件时,该格式首先将数据划分为多个行组。每个行组代表数据集的一个独立单元,从而为大规模操作提供并行处理和高效的内存管理。这种分区策略构成了 Parquet 高性能数据访问的基础。
在每个行组中,Parquet 的组装算法按列而不是按行来重新组织数据。相似的数据类型会分组为列块,从而根据数据的特征进行专门的编码。例如,针对一列日期和一列数值的优化方式是不同的。
Parquet 采用两阶段优化过程。首先,使用行程长度编码 (RLE) 等编码方案来高效表示重复值,这对于有许多重复条目的列尤为重要。然后,应用 Snappy 或 Gzip 等压缩算法进一步降低存储要求。
该格式可创建全面的元数据,包括文件架构和数据类型、每列的统计信息、行组位置和结构。这些元数据有助于实现高效的查询规划和优化。
读取 Parquet 数据时,查询引擎首先查阅元数据来识别相关列。仅从存储空间中读取必要的列块,并根据需要对数据进行解压缩和解码。
Apache Parquet 可以为管理大规模数据操作的组织提供显著的优势。
它的一些优点包括:
Parquet 的数据结构可以显著加快分析查询的运行速度。当应用程序需要特定数据时,它们仅访问相关列,从而将查询时间从几小时缩短到几分钟。这种针对性访问使 Parquet 对于大规模运行复杂分析的组织很有价值。
与简单格式不同,Parquet 可以高效管理现代应用程序中常见的嵌套数据结构和数组。此功能对于处理复杂数据类型的组织非常有用,例如 Web 分析中的类似 JSON 的结构或来自物联网 (IoT) 设备的传感器数据中的嵌套数组。
Parquet 的列式格式从根本上改变了数据的存储和压缩方式。通过将相似的数据类型分组在一起,Parquet 可以对每种类型的数据应用不同的编码算法,从而实现比 CSV 或 JSON 等格式更高的压缩比。
例如,包含数百万笔客户交易的数据集以 CSV 格式存储可能需要数 TB 的存储空间,而以 Parquet 文件存储所需的存储空间则要小得多。
现代数据架构通常需要无缝的工具整合,Parquet 通过对主要框架的原生支持来实现这一点。无论团队使用 Python 和 Pandas 进行分析、使用 Java 进行应用程序开发,还是使用 Apache Spark 进行数据处理,Parquet 都能帮助在整个企业保持一致的数据访问方式。
Parquet 与 Hadoop 的原生集成使其对于大数据处理尤为有效。由于 Parquet 专为 Hadoop 分布式文件系统 (HDFS) 构建,因此在 Hadoop 环境中的性能通常优于传统文件格式。当使用 Parquet 与 Hadoop 时,组织可以更快地运行查询并更高效地存储数据,通常所占用的存储空间只是以前所需存储空间的一小部分。
Apache Parquet 可以满足跨行业和应用程序的一系列数据工程需求。
其中最具影响力的一些实施项目包括:
使用 Apache Spark 等框架或 Python 的 Pandas 库的数据科学家和分析师可从 Parquet 在分析查询方面的优化性能中获益。虽然 Avro 等格式通常擅长记录级处理,但许多人发现 Parquet 文件格式对复杂分析特别有效。
例如,金融服务公司可以使用 Parquet 存储市场数据,让分析师能够近乎实时地处理数百万个交易事件并计算风险指标。
现代数据管道经常在提取、转换和加载 (ETL) 过程中使用 Parquet 作为中间格式或目标格式。它兼容 Apache Spark 等流行框架,并且支持模式演进,对于需要处理不断变化的数据结构的数据工程工作流程非常有价值。
例如,医疗保健组织可以使用 Parquet 高效地将来自多个系统的患者记录转换为统一格式,并使用模式演变功能,在不中断现有流程的情况下自动处理新的数据字段。
以下是 Parquet 文件格式与其他常见存储格式的对比情况:
CSV 和 JSON 等传统格式以行格式存储数据,非常适合简单数据传输和人类阅读。然而,在处理大规模分析时,读取 Parquet 文件具有显著优势。
即使在查询单列时,CSV 也必须扫描整行,而 Parquet 的列式存储空间可以直接访问特定的数据元素。例如,分析 PB 级数据集中的单个列可能需要读取整个 CSV 文件,而 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 zSystems 和 IBM Power 服务器的最快速、最可靠、最安全的存储系统。
IBM Storage 是一个产品系列,包括数据存储硬件、软件定义存储和存储管理软件。
IBM 为 Web 服务器和数据中心基础设施提供主动支持,可减少停机时间并提高 IT 可用性。