我在python上使用spark
,既从终端迭代地启动命令pyspark
,也使用命令spark-submit pythonFile.py
启动整个脚本
我使用来分析本地csv
文件,因此不执行分布式计算。在
我想使用库matplotlib
来绘制数据帧的列。导入matplotlib时,我得到错误ImportError: No module named matplotlib
。然后我遇到了this question,并尝试了sc.addPyFile()
命令,但是您找不到任何与matplotlib相关的文件,我可以在我的操作系统(OSX)上传递给它。在
为此,我创建了一个虚拟环境并安装了matplotlib。在虚拟环境中导航时,我看到没有marplotlib.py
这样的文件,所以我试图将整个文件夹sc.addPyFile("venv//lib/python3.7/site-packages/matplotlib")
传递给它,但还是没有成功。在
我不知道我应该包括哪个文件或如何在这一点上,我没有想法。在
有没有一种简单的方法可以在spark中导入matplotlib
库(使用virtualenv安装或引用操作系统安装)?如果是这样的话,我应该传递哪个*.py
文件sc.addPyFile()
同样,我对分布式计算不感兴趣:python代码只能在我的机器上本地运行。在
我会把我所做的事贴出来。首先,我使用
virtualenv
。所以我用virtualenv path
创建了一个新的。在然后我用
source path/bin/activate
激活它。在我用
pip3 install packageName
安装了所需的软件包。在之后,我用python创建了一个脚本,该脚本创建了virtualenv安装在路径`./path/lib/python3.7/site packages/中的库的zip存档。在
此脚本的代码如下(仅压缩
numpy
):之后,必须在pyspark文件
^{pr2}$myPyspark.py
中引用这些归档文件。通过调用sparkContext
类的方法addPyFile()
来实现这一点。之后你就可以像往常一样导入你的代码了。在我的案例中,我做了以下事情:启动脚本时,必须使用
py-files
在命令中引用zip存档文件。例如:我考虑了两个档案,因为对我来说很清楚如何导入其中一个而不是两个。在
您可以压缩matplotlib目录并将其传递给
addPyFile()
。或者,您可以定义一个包含用户包的环境变量:export PYTHONPATH="venv//lib/python3.7/site-packages/:$PYTHONPATH"
相关问题 更多 >
编程相关推荐