帕帕奇镶木地板介绍

本文最初发表于新堆栈并经允许转载于此。

看看Parquet是什么,它是如何工作的,以及一些公司使用它的优化技术作为其架构的关键组件。

随着生成和存储用于分析的数据量以越来越快的速度增长,开发人员正在尽可能地从各个角度优化性能和降低成本。雷竞技有结算错误吗在千兆字节的规模上,当涉及到存储和处理数据时,即使是边际收益和优化也可以为公司节省数百万美元的硬件成本。

其中一个项目就是这些优化技术的例子Apache拼花.在本文中,您将了解Parquet是什么,它是如何工作的,以及在其体系结构中使用Parquet作为关键组件的一些公司和项目。

什么是Apache Parquet?

拼花是开源的用于存储在捐赠给Apache基金会之前,由Twitter和Cloudera开发的格式。Parquet旨在改进Hadoop现有的各种性能指标,如通过压缩减小磁盘上的数据大小,提高分析查询的读取速度。

随着时间的推移,越来越多的项目和公司采用了Parquet,对于那些希望简化用户导入和导出数据的项目来说,它已经成为一种通用的交换格式。

采用Parquet使新用户更容易迁移或采用新工具,对他们的工作流程的干扰最小,因此它对用户和希望为其产品获得新用户的公司都有好处。

Apache Parquet技术故障

拼花使用了许多创新的技术来提供出色的性能。在进入细节之前,我们可以将结果与用于的另一种文件格式进行比较存储数据:简单的CSV(逗号分隔值文件)。

一些数据来自在将1tb的CSV文件转换为Parquet时显示以下结果:

  • 文件大小减少到130g,减少了87%
  • 查询运行时间从236秒减少到6.78秒,快了34倍
  • 查询所扫描的数据量从1.15TB下降到2.51GB,减少了99%
  • 成本从5.75美元降低到0.01美元,降低了99.7%

那么,是什么秘密武器使Parquet的性能比CSV和其他文件格式好得多呢?让我们来看看Parquet背后的一些关键概念和功能:

  • 运行长度和字典编码Parquet不是将相同的值多次存储在磁盘上,一次又一次地存储相同的值,从而有效地浪费空间,它能够简单地列出该值在一列中出现的次数,从而在频繁重复值的数据集上节省大量空间。这方面的一个例子是CPU监控,其中每个值的利用率都在1-100的范围内。
  • 记录粉碎和组装Apache Parquet借用了谷歌的Dremel论文中的技术,该技术允许Parquet将嵌套的数据结构映射到基于列的布局。这样做的好处是,开发人员仍然可以以更自然的嵌套风格处理数雷竞技有结算错误吗据,同时获得基于列的数据结构的性能优势。
  • 丰富的元数据在底层,Parquet跟踪大量的元数据,这是使上述策略成为可能所需要的。Parquet数据被分成行组、列块和页。文件可以包含多个行组,每个行组为每列只包含一个列块。每个列块包含一页或多页数据。所有这些复杂性都被抽象了出来,所以开发人员不必直接担心。雷竞技有结算错误吗

所有这些特性共同作用,使Parquet具有其性能特点。将其归结为最简单的层次,就是提供元数据来优化查询,以减少计算资源需求,同时减少重复数据点的数量,从而降低存储成本。这将导致更快的查询和更少的存储需求。

在云计算时代,许多云服务根据您处理和扫描的数据量收费,Parquet尤其有用。因为Parquet保留了关于您的结构的额外元数据数据,它能够极大地减少被扫描的不必要数据量,因此无需付费扫描、处理和处理分析对于完成查询不需要的数据,您只获取所需的数据。

使用Apache Parquet的公司和项目

许多项目都支持将Parquet作为导入和导出数据的文件格式,并在内部使用Parquet进行数据存储。以下是其中的一小部分,以及它们的用途:

  • Hadoop是基于谷歌的MapReduce论文开发的大数据处理工具。Parquet最初被设计为与Hadoop一起工作的文件格式。
  • Apache冰山是否尝试将普通关系数据库表的简单性用于大数据规模流处理Spark、Trino和Flink等工具可以从同一个存储后端查询和处理数据。
  • 三角洲湖是一个用于构建数据湖屋风格架构的开源存储框架。Delta Lake集成了Spark、PrestoDB、Flink和Trino等常用计算工具,使数据处理和存储变得简单。
  • Apache火花是用于处理大量数据的分析引擎。除了Pandas API等高级工具外,它还允许使用SQL进行数据处理。

Apache Parquet和InfluxDB

InfluxDB时雷竞技代理的站点间序列数据库是另一个将严重依赖Parquet的项目,特别是用于InfluxDB的新柱状存储引擎IOx.InfluxDB使用Parquet持久存储数据对象存储.这允许数据在热存储层和冷存储层之间有效地移动,从而允许InfluxDB为用户提供更好的性能,同时降低存储成本。与以前的InfluxDB迭代相比,它还提供了更好的数据压缩比。

InfluxDB通过以行协议格式映射发送到InfluxDB的数据来使用Parquet,然后将在行协议中定义的那些标记、字段和时间戳映射到Parquet中的列。然后,可以使用基于字段值数据类型的最佳压缩算法对这些列进行压缩。Parquet文件然后按时间范围分割,这样您只需要使用最少数量的Parquet文件获取所需的时间序列数据。从Parquet文件中提取数据时,使用Apache箭头格式,它也是基于列的,因此会产生最小的性能开销。

结束

在处理大规模数据时,每一点效率都可以为您的公司和用户带来重大利益。Parquet只是众多致力于提高效率的项目之一。虽然作为开发人员,您可能不会直接与Parquet交互,但您经常使用的一些工具很有可能在底层使用Parquet。