2014-07-10 13 views
16

Come posso spedire i moduli compilati C (ad esempio, python-Levenshtein) a ciascun nodo in un cluster di scintille?spedizione di moduli python in pyspark ad altri nodi?

so che posso spedire i file python in scintilla utilizzando uno script python standalone (esempio di codice sottostante):

from pyspark import SparkContext 
sc = SparkContext("local", "App Name", pyFiles=['MyFile.py', 'MyOtherFile.py']) 

ma in situazioni in cui non c'è '.py' come faccio a spedire il modulo?

risposta

30

Se è possibile confezionare il modulo in un file o di .egg.zip, si dovrebbe essere in grado di elencare in pyFiles quando si costruisce il vostro SparkContext (o è possibile aggiungere in un secondo momento attraverso sc.addPyFile).

Per le librerie Python che utilizzano setuptools, è possibile eseguire python setup.py bdist_egg per creare una distribuzione egg.

Un'altra opzione è installare la libreria a livello di cluster, utilizzando pip/easy_install su ciascuna macchina o condividendo un'installazione Python su un filesystem a livello di cluster (come NFS).

+0

Ha funzionato! Sono stato in grado di creare il file egg per il modulo usando il comando precedente, e quindi il processo è stato semplice come aggiungere il file egg nel parametro pyFiles. Roba forte! – mgoldwasser

+0

Qualche suggerimento per far installare a PySpark le dipendenze di .egg? Simile a http://stackoverflow.com/questions/32119225/databricks-spark-egg-dependencies-non-installato-automaticamente – ramhiser

+0

se il mio file * .egg dipende da altre librerie di terze parti, funzionerà anche questo? – guilhermecgs

Problemi correlati