parquet | python操作parquet | python读取parquet文件 | python保存parquet文件
可能目前处理的数据还在excel、sas数据、csv等比较容易展示的数据存储,但随着大模型AI的发展,我们需要处理的数据量呈指数级增长。当涉及到项目中EDC数据的整合,使用传统关系型数据库也存在压力,因为我们主要关注数据的处理和整合,而没有太多的尽力花费时间在ETL的存储优化上,所以有一个高效的存储是很有必要的,Parquet 可以认为是当今存储数据的事实上的标准了。主要优势:1.数据压缩:通过应
文章目录
可能目前处理的数据还在excel、sas数据、csv等比较容易展示的数据存储,但随着大模型AI的发展,我们需要处理的数据量呈指数级增长。
当涉及到项目中EDC数据的整合,使用传统关系型数据库也存在压力,因为我们主要关注数据的处理和整合,而没有太多的尽力花费时间在ETL的存储优化上,所以有一个高效的存储是很有必要的,Parquet 可以认为是当今存储数据的事实上的标准了。
Parquet 一种文件格式
主要优势:
1.数据压缩:通过应用各种编码和压缩算法,Parquet文件可减少内存、存储体积。
2.列式存储:采用列式存储能够支持快速读取。
3.与语言无关:支持不同编程语言操作 Parquet 文件。
4.开源格式
5.支持复杂数据类型
行存储vs列存储
在传统的基于行的存储中,数据存储为行序列。
如果要进行一些计算,引擎必须从头到尾扫描每一行
Parquet 是一种列格式,将数据存储在行组中
python操作parquet文件
1. 使用的包pyarrow
import pyarrow.parquet as pq
import pandas as pd
pyarrow.parquet模块,可以读取和写入Parquet文件,以及进行一系列与Parquet格式相关的操作。例如,可以使用该模块读取Parquet文件中的数据,并转换为pandas DataFrame来进行进一步的分析和处理。同时,也可以使用这个模块将DataFrame的数据保存为Parquet格式。
2. 使用
2.1 pandas操作parquet文件
df保存为parquet
def save_df_to_parquet(df, file):
"""
将df保存为 parquet 格式
Args:
df (pd.DataFrame): 要保存的df数据
file (str): 保存的文件路径
"""
try:
# 确保目录存在
os.makedirs(os.path.dirname(file), exist_ok=True)
# 将metadata_df保存到oss
df.to_parquet(
file,
index=False,
engine='pyarrow', # 引擎
compression='snappy' # 压缩算法
)
logger.info(f"成功保存df到: {file}")
except Exception as e:
logger.error(f"df到oss时发生错误: {str(e)}")
raise
读取 parquet为df
def read_parquet_to_df(file):
"""
读取 parquet 文件为 DataFrame
Args:
file (str): 要读取的 parquet 文件路径
Returns:
pd.DataFrame: 读取的 DataFrame 数据
"""
try:
# 确保文件存在
if not os.path.exists(file):
raise FileNotFoundError(f"文件 {file} 不存在")
# 读取 parquet 文件
df = pd.read_parquet(
file,
engine='pyarrow' # 与保存时使用的引擎一致
)
logger.info(f"成功读取 parquet 文件: {file}")
return df
except Exception as e:
logger.error(f"读取 parquet 文件时发生错误: {str(e)}")
raise
2.2 to_parquet 方法中 compression 参数选择的压缩算法
-
Snappy 是一种快速的压缩算法,由 Google 开发。它的主要特点是压缩和解压缩速度非常快,虽然压缩率可能不如一些其他算法(如 Gzip 或 Brotli)高,但它在处理大量数据时能够显著减少磁盘 I/O 和网络传输时间,同时不会对 CPU 造成太大负担。
-
在数据存储和传输场景中,使用 Snappy 压缩算法可以在保证数据完整性的同时,优化存储空间和读写性能。
2.3 parquet 的数据类型
后续更新···
更多推荐
所有评论(0)