Parquet 是一种开源文件格式,可用于 Hadoop 生态系统中的任何项目。与基于行的文件(如 CSVTSV 文件)相比,Apache Parquet 专为高效且性能良好的平面柱存储格式而设计。

Parquet 使用record shreddingassembly算法,该算法优于嵌套命名空间的简单拼合。Parquet 经过优化,可批量处理复杂的数据,并采用不同的方式进行高效的数据压缩和编码类型。此方法最适合需要从大型表中读取某些列的查询。Parquet只能读取所需的列,因此极大地将 IO 最小化

列式存储的优点

  • 与基于行的文件(如 CSV)相比,像 Apache Parquet 这样的列式存储旨在提高效率。查询时,列存储可以非常快速地跳过非相关数据。因此,与面向行的数据库相比,聚合查询更耗时。这种存储方式已转化为硬件节省,并最大限度地减少了访问数据的延迟。
  • Parquet是从零开始建造的。因此,它能够支持嵌套数据结构。Parquet 数据文件的布局针对处理大量数据的查询进行了优化,每个文件可达GB 。
  • Parquet 旨在支持灵活的压缩选项和高效的编码方案。由于每列的数据类型非常相似,因此每列的压缩都很简单(这使得查询更快)。可以使用可用的多个编解码器之一压缩数据;因此,可以以不同的方式压缩不同的数据文件。
  • Apache Parquet 最适合交互式和无服务器技术,如 AWS Athena、Google BigQuery 和 Google Dataproc。

Parquet和 CSV 的区别

CSV 是一种简单且广泛传播的格式,由许多工具(如 Excel、Google 表格)使用,许多其他工具都可以生成 CSV 文件。即使 CSV 文件是数据处理管道的默认格式,它也有一些缺点:

Amazon Athena和 Spectrum 将基于每个查询扫描的数据量收费。
Google 和亚马逊会根据 GS/S3 上存储的数据量向您收费。

Parquet 帮助其用户将大型数据集的存储需求至少减少了三分之一,此外,它还极大地改善了扫描和去序列化时间,从而降低了总体成本。

下表比较了将数据从 CSV 转换为 Parquet 获得的节省和加速。

hadoop 倒序 hadoop parquet_数据

参考

列存储格式Parquet浅析 - 简书

Spark SQL的Parquet那些事儿 - 云+社区 - 腾讯云

What is Apache Parquet?