2015-04-21 10 views
7

Seguo questo collegamento http://ramhiser.com/2015/02/01/configuring-ipython-notebook-support-for-pyspark/ per creare PySpark Profile per IPython.Crea profilo PySpark per IPython

00-pyspark-setup.py 
# Configure the necessary Spark environment 
import os 
import sys 

spark_home = os.environ.get('SPARK_HOME', None) 
sys.path.insert(0, spark_home + "\python") 

# Add the py4j to the path. 
# You may need to change the version number to match your install 
sys.path.insert(0, os.path.join(spark_home, '\python\lib\py4j-0.8.2.1-src.zip')) 

# Initialize PySpark to predefine the SparkContext variable 'sc' 
execfile(os.path.join(spark_home, '\python\pyspark\shell.py')) 

Il mio problema quando si digita sc in ipython-notebook, ho ottenuto '' dovrei vedere un risultato simile al <pyspark.context.SparkContext at 0x1097e8e90>.

Qualche idea su come risolverlo?

+0

Cosa stai cercando di ottenere. Dove si verifica il problema nel tuo codice? – Rias

+0

@Rias Ho aggiornato la mia domanda –

+0

In Python 3 è stato rimosso execfile in modo che l'ultima riga debba essere modificata in exec (aperto (os.path.join (spark_home, '\ python \ pyspark \ shell.py')). Read()). –

risposta

7

Stavo cercando di fare lo stesso, ma ho avuto problemi. Ora, io uso findspark (https://github.com/minrk/findspark) invece. È possibile installarlo con pip (vedi https://pypi.python.org/pypi/findspark/):

$ pip install findspark 

E poi, all'interno di un notebook:

import findspark 
findspark.init() 

import pyspark 
sc = pyspark.SparkContext(appName="myAppName") 

Se si vuole evitare questo boilerplate, è possibile inserire i suddetti 4 linee in 00-pyspark-setup.py.

(In questo momento ho Spark 1.4.1. E 0.0.5 findspark.)

+0

Di gran lunga la soluzione più elegante, grazie. –

0

prega di provare a impostare il valore corretto di SPARK_LOCAL_IP variabile, ad es .:

export SPARK_LOCAL_IP="$(hostname -f)" 

prima di eseguire ipython notebook --profile=pyspark.

Se questo non risolve il problema, provare a eseguire il debug ambiente eseguendo script di installazione:

python 00-pyspark-setup.py 

Forse si possono trovare alcune linee di errore in quel modo e il debug.

0

Sei su Windows? Ho a che fare con le stesse cose e un paio di cose mi hanno aiutato. Nel 00-pyspark-setup.py, modificare questa riga (abbinare il vostro percorso della cartella scintilla)

# Configure the environment 
if 'SPARK_HOME' not in os.environ: 
    print 'environment spark not set' 
    os.environ['SPARK_HOME'] = 'C:/spark-1.4.1-bin-hadoop2.6' 

Sono sicuro che si è aggiunto un nuovo variabile d'ambiente, se non, questo imposterà manualmente.

La prossima cosa che ho notato è che se si utilizza ipython 4 (l'ultima), i file di configurazione non funzionano nello stesso modo in cui lo si vede in tutte le esercitazioni. Puoi provare se i tuoi file di configurazione vengono richiamati aggiungendo una dichiarazione di stampa o semplicemente rovinandoli in modo da generare un errore.

Sto usando una versione inferiore di ipython (3) ed io lo chiamo usando

ipython notebook --profile=pyspark 
0

Modificare il 00-pyspark-setup.py a: variabile d'ambiente

# Configure the necessary Spark environment 
import os 

# Spark home 
spark_home = os.environ.get("SPARK_HOME") 

######## CODE ADDED ######## 
os.environ["PYSPARK_SUBMIT_ARGS"] = "--master local[2] pyspark-shell" 
######## END OF ADDED CODE ######### 

sys.path.insert(0, spark_home + "/python") 
sys.path.insert(0, os.path.join(spark_home, 'python/lib/py4j-0.8.2.1-src.zip')) 

# Initialize PySpark to predefine the SparkContext variable 'sc' 
execfile(os.path.join(spark_home, 'python/pyspark/shell.py')) 

In sostanza, il codice aggiunto imposta la PYSPARK_SUBMIT_ARGS per

--master local[2] pyspark-shell, che funziona per Spark 1.6 standalone.

Ora eseguire nuovamente il blocco appunti di ipython. Esegui os.environ["PYSPARK_SUBMIT_ARGS"] per verificare se il suo valore è impostato correttamente.In tal caso, digitare sc dovrebbe fornire l'output previsto come <pyspark.context.SparkContext at 0x1097e8e90>