求助:使用pandas以append模式写入parquet文件时数据被覆盖
Pandas写入Parquet时append模式失效的原因及解决方法
核心问题:单个Parquet文件不支持追加
Parquet是列式存储格式,单个Parquet文件的结构是写后不可修改的,pandas的mode='append'参数对单个Parquet文件无效,执行时依然会覆盖原有文件。
你遗漏的关键细节及解决方法
必须写入目录而非单个文件
要实现追加功能,需要将目标路径设为一个目录(而非具体的.parquet文件路径)。pandas会在该目录下生成多个独立的Parquet文件,mode='append'时会新增文件到目录中,而非覆盖。
正确的写入语法:df.to_parquet('./parquet_data_dir', mode='append', engine='pyarrow')读取时直接读取整个目录即可自动合并所有文件:
pd.read_parquet('./parquet_data_dir')确认引擎支持
不同的Parquet引擎对append模式的支持有差异:- 使用
engine='pyarrow'时,对目录式Parquet数据集的append支持更稳定; fastparquet也支持目录追加,但需要确保版本兼容。
- 使用
保证数据Schema一致
追加的新数据必须和原有数据的Schema(列名、数据类型)完全一致,否则可能导致追加失败或数据读取异常。
内容的提问来源于stack exchange,提问作者Sushmitha
相关产品推荐
相关产品推荐

