使用PyArrow向GCS存储数据失败:参数'existing_data_behavior'报错
问题分析与解决方案
错误原因
你遇到的TypeError是因为pyarrow.parquet.write_to_dataset函数没有existing_data_behavior这个参数,而且该函数已被PyArrow官方标记为废弃,不再推荐使用。
正确实现方式
要写入分区Parquet并处理目标文件夹的已有数据,建议使用PyArrow的pyarrow.dataset.write_dataset函数,它原生支持existing_data_behavior参数来控制数据覆盖逻辑。
修正后的代码
import pyarrow.dataset as ds import pyarrow.parquet as pq import gcsfs table_w = pyarrow.Table.from_pandas(pd_df) gs = gcsfs.GCSFileSystem() # 使用write_dataset替代废弃的write_to_dataset ds.write_dataset( table_w, base_dir="gs://bucket/test", format="parquet", partitioning=ds.partitioning( schema=table_w.schema.select(["group_id"]), flavor="spark" ), filesystem=gs, existing_data_behavior="delete_matching" )
参数说明
existing_data_behavior="delete_matching":删除与当前写入数据分区匹配的已有文件,保留其他分区的数据- 若需完全覆盖整个目标文件夹(忽略分区),可设置
existing_data_behavior="delete_all" - 其他可选值:
"overwrite_or_ignore"(覆盖冲突文件,忽略报错)、"error"(存在数据时直接抛出错误,默认行为)
内容的提问来源于stack exchange,提问作者Tom J Muthirenthi
相关产品推荐
相关产品推荐

