1. Parquet简介
Parquet是一种开放的列式存储格式,旨在提高大数据处理和分析的效率。
Parquet由Twitter和Cloudera合作开发,并于2015年5月从Apache的孵化器项目毕业,成为Apache的顶级项目。
Parquet旨在高效存储和处理大规模数据集,广泛应用于Hadoop、Spark等大数据生态系统。
2. Parquet的基本原理
2.1. 列式存储
与传统的行式存储不同,Parquet将数据按列存储。这意味着在查询时,只需读取所需的列,而无需读取整行数据,从而大大减少了I/O操作,提高了查询效率。
2.2. 数据压缩
Parquet支持多种压缩算法,如Snappy、Gzip和Zstd等。这些算法可以显著减少存储空间,同时保持较高的读取速度。
2.3. 复杂数据类型
Parquet能够处理嵌套数据结构,如数组、映射等,这使得它非常适合存储和处理复杂的JSON和Avro数据。
2.4. 广泛的兼容性
Parquet能够与Hadoop、Spark、Hive等大数据处理框架无缝集成。
3. Parquet的应用场景
在数据仓库方面,Parquet可以用于存储事实表和维度表,提高查询性能和数据压缩率。
在日志分析方面,Parquet可以高效存储和查询大规模日志数据,快速发现和解决问题。
在实时数据分析方面,Parquet结合Spark Streaming等实时处理框架,支持低延迟的数据处理需求
在机器学习方面,Parquet广泛用于存储训练数据和模型参数,大大提高了数据处理效率和模型训练速度。
4. 百万级数据处理简单对比
本次对比使用数据量为百万行、十几列,读取和写入都使用pandas的dataframe,分别使用Excel格式、SQLite数据库、Parquet格式来读写数据。Excel使用xlsx格式;读取SQLite时,已经导入数据,存储时新建库表;Parquet的压缩使用gzip。
4.1. 读取时效比较
从上图中可以看出,使用Excel格式来读取数据大概需要681秒;通过SQLite来读取数据大概需要27秒;通过Parquet读取数据只需要1秒,哇哦,速度好快啊。
4.2. 写入时效比较
从上图可以看出,写入成Excel格式大概需要709秒;写入SQLite库大概需要33秒;写入成为Parquet格式,大概需要5秒,哇哦,也挺快的。
下次临时存取数据跑模型的时候,我果断选择Parquet格式,真是太快了。
5. 畅想
Parquet作为一种高效的列式存储格式,在大数据处理和分析领域发挥着重要作用。其独特的存储特性和优势使得它成为处理大规模数据集时的理想选择。随着大数据技术的不断发展,Parquet的应用前景将更加广阔。
标签:存储,读取,时效,读写,Parquet,数据处理,格式,数据 From: https://www.cnblogs.com/DidierFeng/p/18619315