我试图弄清楚如何使用外部库。我有一个在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/<package_name>
所有这些都会产生以下错误
ImportError: ('No module named <module>', <function subimport at 0x7f287255dc80>, (<module>,))
org.apache.spark.api.python.PythonRDD$$anon$1.read(PythonRDD.scala:124)
org.apache.spark.api.python.PythonRDD$$anon$1.<init>(PythonRDD.scala:154)
org.apache.spark.api.python.PythonRDD.compute(PythonRDD.scala:87)
....
我还尝试将这些文件复制到pyspark
目录,但没有成功。
答案 0 :(得分:6)
创建虚拟环境时,请将--system-site-packages
选项传递给virtualenv
:
virtualenv --system-site-packages venv
如果您忘记通过选项:
rm venv/lib/python2.7/no-global-site-packages.txt
通过两种方式,您可以在虚拟环境中import system-site-packages