2014-10-04 58 views
3

我想弄清楚如何使用外部庫。我有一個在Spark上成功運行的程序,現在我正試圖導入外部庫。我使用的是virtualenv,每次我提交它時,spark都會抱怨找不到該文件。如何使用virtualenv使用外部庫?

這是一個許多人提交我已經試過命令:

/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目錄複製到沒有成功。

回答

6

當您創建虛擬包膜,通--system-site-packages選項virtualenv

virtualenv --system-site-packages venv 

如果您忘記傳遞選項:

rm venv/lib/python2.7/no-global-site-packages.txt 

通過這兩種方式,你可以在虛擬ENV import system-site-packages