Azure运行4个月的PySpark管道突发报错:No module named 'org.apache.commons'
解决方案:tabula-py 报
ModuleNotFoundError: No module named 'org.apache.commons' 这个错误本质是tabula-py依赖的JPype1无法正确绑定Java类库,大概率是Azure环境中依赖包更新、损坏或Java环境变动导致的,以下是可行的解决步骤:
重新安装指定版本的依赖包
环境自动更新的兼容包可能出现适配问题,强制安装稳定兼容版本:- 卸载现有冲突包:
pip uninstall -y tabula-py JPype1 - 安装适配Python3.8的稳定版本:
pip install tabula-py==2.7.0 JPype1==1.4.1
注意:Azure集群需将安装命令加入初始化脚本,避免每次重启环境重置。
- 卸载现有冲突包:
检查并修复Java环境
tabula-py要求Java 8及以上版本,执行以下命令确认环境:java -version若版本不符或
JAVA_HOME未正确设置,需在集群配置中指定Java路径,例如:export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 export PATH=$JAVA_HOME/bin:$PATH清理缓存并重启环境
- 清理pip缓存,避免损坏的包残留:
pip cache purge - 重启Azure数据管道的集群实例,确保环境加载最新配置。
- 清理pip缓存,避免损坏的包残留:
备选:指定Java路径调用
若上述方法无效,可在代码中强制指定Java路径:import os os.environ['JAVA_HOME'] = '/path/to/your/java' # 替换为实际Java路径 from tabula.io import read_pdf from io import BytesIO df = tabula.io.read_pdf(BytesIO(pdf_content), pandas_options={'header': None}, pages=3, stream=True)[0]
内容的提问来源于stack exchange,提问作者mohamadmaarouf_
相关产品推荐
相关产品推荐

