You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在YARN上运行Spark 2.3(Python 3.x)执行pi.py时遇库依赖错误

解决Spark运行Python 3.6.5时出现的libffi.so.4: cannot open shared object file错误

你遇到的确实是库依赖问题,和Spark配置本身关系不大——问题出在你使用的Python 3.6.5找不到它需要的libffi.so.4库文件,而旧版本Python 3.3.x依赖的libffi版本刚好是系统已有的,所以能正常运行。

问题原因

libffi是Python的ctypes模块依赖的底层库,你的Python 3.6.5编译/安装时依赖的是libffi.so.4,但当前系统中没有这个版本的库,或者库的路径没有被Python识别到。

解决方案

下面是具体的修复步骤:

1. 检查系统现有libffi库

先通过命令查看系统里已安装的libffi文件:

find / -name "libffi.so*" 2>/dev/null

这个命令会列出所有以libffi.so开头的文件,比如可能会看到libffi.so.6、libffi.so.6.0.4等更高版本的文件。

2. 安装缺失的libffi.so.4(推荐)

因为你的系统是SUSE,优先通过包管理器安装对应版本的libffi:

sudo zypper install libffi4

如果zypper提示找不到包,可以去SUSE的软件仓库查找对应的rpm包手动安装。

3. 临时解决方案:创建软链接(如果找不到对应包)

如果系统有更高版本的libffi(比如libffi.so.6),可以尝试创建软链接模拟libffi.so.4:

# 替换成你实际找到的libffi路径
sudo ln -s /usr/lib64/libffi.so.6 /usr/lib64/libffi.so.4

⚠️ 注意:这种方法是临时 workaround,可能存在兼容性风险,优先推荐安装对应版本的库。

4. 重新编译Python(如果是手动编译的版本)

你的Python是Python-3.6.5_suse,看起来是手动编译安装的。如果上面的方法都不行,可以重新编译Python,确保编译前系统已安装libffi的开发包:

# 先安装libffi开发依赖
sudo zypper install libffi-devel
# 重新编译安装Python 3.6.5
cd Python-3.6.5_suse
./configure --prefix=/your/install/path
make && sudo make install

这样编译出来的Python会自动链接系统当前的libffi库,避免版本不匹配问题。

5. 验证修复

重新运行Spark的pi示例脚本:

spark-submit --master local[*] pi.py

如果没有报错,说明问题已经解决。


内容的提问来源于stack exchange,提问作者nullptr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:01:41