2015-04-04 11 views
5

Jestem iskra - przesyłam plik python, który importuje numpy, ale dostaję błąd no module named numpy.Brak modułu o nazwie numpy podczas przesyłania przez iskrę

$ spark-submit --py-files projects/other_requirements.egg projects/jobs/my_numpy_als.py 
Traceback (most recent call last): 
    File "/usr/local/www/my_numpy_als.py", line 13, in <module> 
    from pyspark.mllib.recommendation import ALS 
    File "/usr/lib/spark/python/pyspark/mllib/__init__.py", line 24, in <module> 
    import numpy 
ImportError: No module named numpy 

myślałem chciałbym ciągnąć w jajka na NumPy -python-plików, ale mam problemy z zastanawianie się, jak budować, że jajko. Ale potem przyszło mi do głowy, że sam Pyspark używa numpy. Głupotą byłoby wciągnąć własną wersję numpy.

Masz pomysł na odpowiednią rzecz?

Odpowiedz

3

Wygląda na to, że Spark używa wersji Pythona, która nie ma zainstalowanego numpy. Może tak być, ponieważ pracujesz w środowisku wirtualnym.

Spróbuj tego:

# The following is for specifying a Python version for PySpark. Here we 
# use the currently calling Python version. 
# This is handy for when we are using a virtualenv, for example, because 
# otherwise Spark would choose the default system Python version. 
os.environ['PYSPARK_PYTHON'] = sys.executable 
+0

Spróbuj zainstalować pełny pakiet SciPy lub niezależny pakiet NumPy dla aktualnie używanego binarnego języka Python: http://www.scipy.org/install.html –

0

Czasami podczas importowania niektórych bibliotek, Twój nazw jest zanieczyszczona numpy funkcji. Funkcje takie jak min, max i sum są szczególnie podatne na te zanieczyszczenia. W razie wątpliwości znajduj połączenia z tymi funkcjami i zastępuj te połączenia numerem __builtin__.sum itd. Czasami będzie to szybsze niż zlokalizowanie źródła zanieczyszczenia.

0

Mam to do pracy instalując numpy na wszystkich węzłach emr poprzez skonfigurowanie małego skryptu ładowania, który zawiera następujące (między innymi).

#!/bin/bash -xe sudo yum install python-numpy python-scipy -y

Następnie należy skonfigurować bootstrap skryptu mają być wykonywane po uruchomieniu klastra dodając następującą opcję AWS polecenia EMR (poniższy przykład daje argument do skryptu startowego)

--bootstrap-actions Path=s3://some-bucket/keylocation/bootstrap.sh,Name=setup_dependencies,Args=[s3://some-bucket]

Można tego użyć również podczas konfigurowania klastra z DataPipeline.

Powiązane problemy