2015-10-09 9 views
5

Ecco il codice che sto cercando di eseguire:eccezione NumPy quando si utilizza MLlib anche se Numpy è installato

from pyspark.mllib.recommendation import ALS 
iterations=5 
lambdaALS=0.1 
seed=5L 
rank=8 
model=ALS.train(trainingRDD,rank,iterations, lambda_=lambdaALS, seed=seed) 

Quando faccio funzionare l'ordine model=ALS.train(trainingRDD,rank,iterations, lambda_=lambdaALS, seed=seed) che dipende numpy, la libreria Py4Java che Spark utilizza genera la seguente messaggio:

Py4JJavaError: An error occurred while calling o587.trainALSModel. 
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 67.0 failed 4 times, most recent failure: Lost task 0.3 in stage 67.0 (TID 195, 192.168.161.55): org.apache.spark.api.python.PythonException: Traceback (most recent call last): 
    File "/home/platform/spark/python/lib/pyspark.zip/pyspark/worker.py", line 98, in main 
    command = pickleSer._read_with_length(infile) 
    File "/home/platform/spark/python/lib/pyspark.zip/pyspark/serializers.py", line 164, in _read_with_length 
    return self.loads(obj) 
    File "/home/platform/spark/python/lib/pyspark.zip/pyspark/serializers.py", line 421, in loads 
    return pickle.loads(obj) 
    File "/home/platform/spark/python/lib/pyspark.zip/pyspark/mllib/__init__.py", line 27, in <module> 
Exception: MLlib requires NumPy 1.4+ 

NumPy 1.10 è installato sulla macchina indicata nel messaggio di errore. Inoltre ottengo versione 1.9.2 durante l'esecuzione del seguente comando direttamente nel mio quaderno Jupyter: import numpy numpy.version.version

Sono ovviamente esegue una versione di NumPy di ​​età superiore a 1.4, ma non so dove. Come posso sapere su quale macchina devo aggiornare la mia versione di NumPy?

risposta

15

Si tratta di un bug nel codice di inizializzazione Mllib

import numpy 
if numpy.version.version < '1.4': 
    raise Exception("MLlib requires NumPy 1.4+") 

'1.10' è < da '1.4' È possibile utilizzare NumPy 1.9.2.

Se è necessario utilizzare NumPy 1.10 e non si desidera eseguire l'aggiornamento a spark 1.5.1. Effettua un aggiornamento manuale del codice. https://github.com/apache/spark/blob/master/python/pyspark/mllib/init.py

0

Sembra che siano installate due versioni di numpy e pyspark sta importando quello precedente. Per confermare questo, puoi fare quanto segue:

import numpy 
print numpy.__version__ 
print numpy.__path__ 

Questo probabilmente ti darà 1.9.2 ed è percorso. Ora fai questo:

import pyspark 
print pyspark.numpy.__version__ 
print pyspark.numpy.__path__ 

Caricamento un numpy diverso da un altro percorso? Se sì, rimuoverlo dovrebbe probabilmente risolvere il problema.

+3

ricevo il seguente errore quando eseguo il secondo set di comandi ' ' 'di stampa import pyspark pyspark.numpy .__ version__' ' di stampa pyspark.numpy .__ path__': ' ------ -------------------------------------------------- ------------------- ' ' AttributeError Traceback (ultima chiamata ultima) ' ' in () ' ' 1 import pyspark' '----> 2 print pyspark.numpy .__ version__' ' 3 print pyspark.numpy .__ path__' '' 'AttributeError: 'module' object ha s nessun attributo 'numpy'' ' – pelicanactor

+0

Ottenere lo stesso errore di Arnaud – ADJ

Problemi correlati