Parquet
是一种开源文件格式
,可用于 Hadoop 生态系统中的任何项目。与基于行的文件(如 CSV
或 TSV
文件)相比,Apache Parquet
专为高效且性能良好的平面柱存储格式而设计。
Parquet
使用record shredding
和assembly
算法,该算法优于嵌套命名空间的简单拼合。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 获得的节省和加速。
参考
Spark SQL的Parquet那些事儿 - 云+社区 - 腾讯云