我正在试图弄清楚如何使用外部库.我有一个在Spark上成功运行的程序,现在我正在尝试导入外部库.我正在使用virtualenv
,每次提交时,spark都会抱怨它无法找到该文件.
这是我尝试过的许多提交命令之一:
/path/to/spark-1.1.0-bin-hadoop2.4/bin/spark-submit ua_analysis.py --py-files `pwd`/venv/lib/python2.7/site-packages
我尝试使用--py-files
标志单独添加文件,我也尝试了以下子目录.
venv/lib venv/python2.7 venv/lib/python2.7/site-packages/
所有这些都会产生以下错误
ImportError: ('No module named', , ( ,)) org.apache.spark.api.python.PythonRDD$$anon$1.read(PythonRDD.scala:124) org.apache.spark.api.python.PythonRDD$$anon$1. (PythonRDD.scala:154) org.apache.spark.api.python.PythonRDD.compute(PythonRDD.scala:87) ....
我也尝试将这些文件复制到pyspark
目录中,但没有成功.
创建虚拟环境时,将--system-site-packages
选项传递给virtualenv
:
virtualenv --system-site-packages venv
如果你忘了通过选项:
rm venv/lib/python2.7/no-global-site-packages.txt
通过两种方式,您可以import system-site-packages
在虚拟环境中.