先说问题:在虚拟机下通过vs core运行pyspark程序报错 先提示的是未找到pyj4
ModuleNotFoundError: No module named 'py4j'
首先在百度找到的问题是:bashrc配置中的压缩包名字与实际不同,但是通过对比发现配置设置的
名称与实际名称相符,具体可看下边连接
(百度百科:
Py4J 是一个用 Python 和 Java 编写的库。
通过 Py4J,Python程序 能够动态访问 Java虚拟机 中的 Java对象,Java程序 也能够回调 Python对象。
)
VScode中pyspark调试配置以及无法启动调试问题
排除名称不一致问题,接着就通过pip进行安装 py4j 库,因为我用的版本并不是最新版,所以安装的时候选择了具体对应的版本
安装指定版本:
sudo pip install py4j==对应版本号
更新到最新版本:
sudo pip install py4j
卸载
sudo pip uninstall py4j
令人难以置信的是再次运行这时候报了另外一个错:
return types.CodeType(TypeError: an integer is required (got type bytes)
起初以为是代码的问题,通过spark-submit运行写好的程序,结果是成功执行,
再次访问百度得到的结果是说python版本的问题,再试一下用虚拟机下了python3.6运行是能够正
常运行。问题就来了:既然本机能运行,为啥vs core 运行就会报错呢?
观察vs core 运行终端输出的信息
发现问题:vs core 中指定的python路径并不是python3.6的,那么尝试改动python path
vscode 如何指定python路径到自己的venv环境
改为自己的python3.6版本地址
设置完毕,再次运行成功了