使用pandas.read_parquet时遇OSError: [Errno 22] Invalid argument错误求助
解决读取Parquet文件时的OSError: [Errno 22] Invalid argument错误
问题场景
执行以下代码读取后缀为.rot的Parquet格式数据表时触发错误:
import pandas as pd file = pd.read_parquet('file.rot', engine='fastparquet')
错误栈指向fastparquet解析文件头时的seek操作:
OSError: [Errno 22] Invalid argument
排查与解决步骤
1. 验证文件格式与路径
- 确认文件是标准Parquet格式:将文件重命名为
.parquet后缀再尝试读取,避免后缀识别问题:file = pd.read_parquet('file.parquet', engine='fastparquet') - 检查文件路径是否包含特殊字符(如非ASCII字符、空格):Windows环境下这类字符可能导致文件IO异常,建议将文件移至路径更简单的目录(如
C:\temp\file.rot)重新测试。
2. 修复依赖版本兼容性
- 更新fastparquet和pandas到最新稳定版,解决版本匹配问题:
conda update fastparquet pandas - 若更新后问题仍存在,尝试降级到已知稳定的版本组合:
conda install fastparquet=2023.8.0 pandas=2.1.0
3. 切换Parquet引擎测试
- 尝试使用pyarrow引擎读取,排除fastparquet自身的解析问题:
若pyarrow能正常读取,说明问题出在fastparquet对该文件的处理逻辑上,可暂时用pyarrow替代,或向fastparquet项目提交问题反馈。# 先安装pyarrow(未安装时执行) # conda install pyarrow file = pd.read_parquet('file.rot', engine='pyarrow')
4. 检查文件完整性
- 确认文件未损坏:若文件是通过传输/下载获取的,重新获取完整文件后再测试。也可开启fastparquet的验证参数检查文件完整性:
file = pd.read_parquet('file.rot', engine='fastparquet', verify=True)
内容的提问来源于stack exchange,提问作者EsOj
相关产品推荐
相关产品推荐

