2015-04-04 9 views
5

Sono scintilla presentazione di un file python che le importazioni NumPy ma sto ottenendo un errore di no module named numpy.No module named NumPy quando scintilla della presentazione

$ 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 

pensavo avrei tirare dentro un uovo per -python-files NumPy, ma sto avendo difficoltà a capire come costruire l'uovo. Ma poi mi è venuto in mente che lo stesso pyspark utilizza numpy. Sarebbe sciocco tirare dentro la mia versione di Numpy.

Qualche idea sulla cosa giusta da fare qui?

risposta

3

Sembra Spark sta usando una versione di Python che non hanno numpy installato. Potrebbe essere perché stai lavorando all'interno di un ambiente virtuale.

Prova questo:

# 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

Prova installare piena SciPy o un pacchetto indipendente NumPy per il binario Python che si sta utilizzando: http://www.scipy.org/install.html –

0

A volte, quando si importano alcune librerie, lo spazio dei nomi è inquinato da numpy funzioni. Funzioni come min, max e sum sono particolarmente soggette a questo inquinamento. In caso di dubbio, individuare le chiamate a queste funzioni e sostituire queste chiamate con __builtin__.sum ecc. In tal caso, a volte sarà più veloce di individuare la fonte di inquinamento.

0

ho ottenuto questo al lavoro con l'installazione di NumPy su tutti i nodi EMR-configurando un piccolo script bootstrap che contiene la seguente (tra le altre cose).

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

quindi configurare lo script di bootstrap da eseguire quando si avvia il cluster aggiungendo la seguente opzione agli AWS comando EMR (l'esempio seguente dà un argomento per lo script di bootstrap)

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

Questo può essere utilizzato quando si configura un cluster automaticamente da DataPipeline pure.