2015-07-02 10 views
7

provo a fare funzionare Apache Spark in IPython notebook, seguire questa insruction (e tutti i consigli nei commenti) - linkErrore: È necessario specificare una risorsa primaria (JAR o Python o un file R) - IPython notebook

Ma quando ho gestito IPython Notebook da questo comando:

ipython notebook --profile=pyspark 

ottengo questo errore:

Error: Must specify a primary resource (JAR or Python or R file) 

se corro pyspark in guscio, tutto OK. Ciò significa che ho qualche problema con la connessione Spark e IPython.

Tra l'altro, questo il mio bash_profile:

export SPARK_HOME="$HOME/spark-1.4.0" 
export PYSPARK_SUBMIT_ARGS='--conf "spark.mesos.coarse=true" pyspark-shell' 

E questo contiene ~/.ipython/profile_pyspark/startup/00-pyspark-setup.py:

# Configure the necessary Spark environment 
import os 
import sys 

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

# If Spark V1.4.x is detected, then add ' pyspark-shell' to 
# the end of the 'PYSPARK_SUBMIT_ARGS' environment variable 
spark_release_file = spark_home + "/RELEASE" 
if os.path.exists(spark_release_file) and "Spark 1.4" in open(spark_release_file).read(): 
    pyspark_submit_args = os.environ.get("PYSPARK_SUBMIT_ARGS", "") 
    if not "pyspark-shell" in pyspark_submit_args: pyspark_submit_args += " pyspark-shell" 
    os.environ["PYSPARK_SUBMIT_ARGS"] = pyspark_submit_args 

# Add the spark python sub-directory to the path 
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")) 

E che potrebbe essere necessario - ieri ho aggiornato il mio OS X al 10.10.4

+1

Vorrei provare cose come https://pypi.python.org/pypi/findspark per impostare la scintilla, invece di fare affidamento su post di blog che ti dicono di configurare le cose in un modo complesso che non è necessario e meno flessibile. – Matt

+0

Quindi, ci provo, ma non aiuta. Comunque grazie! –

+0

@Matt Vorrei poter dare il tuo commento 5 upvotes. Ho provato molti dei post sul blog e il nuovo progetto Toree, con vari gradi di dolore e non molto successo. Con findspark, ancora una volta MinRK offre un'ottima soluzione semplice da usare. – MarkNS

risposta

8

Ho avuto un problema simile e ho utilizzato lo stesso file 00-pyspark-setup.py quando utilizzato con spark-1.4.0.

Come spiegato dai commenti di Philippe Rossignol sul this blog, sono stati aggiunti le seguenti righe al 00-pyspark-setup.py file di poiché l'argomento pyspark-shell è necessario per PYSPARK_SUBMIT_ARGS:

# If Spark V1.4.x is detected, then add ' pyspark-shell' to 
# the end of the 'PYSPARK_SUBMIT_ARGS' environment variable 
spark_release_file = spark_home + "/RELEASE" 
if os.path.exists(spark_release_file) and "Spark 1.4" in open(spark_release_file).read(): 
    pyspark_submit_args = os.environ.get("PYSPARK_SUBMIT_ARGS", "") 
    if not "pyspark-shell" in pyspark_submit_args: pyspark_submit_args += " pyspark-shell" 
    os.environ["PYSPARK_SUBMIT_ARGS"] = pyspark_submit_args 

Tuttavia dentro la mia cartella spark-1.4.0, c'era no RELEASE file, quindi la condizione if per aggiungere pyspark-shell a PYSPARK_SUBMIT_ARGS non è mai stata soddisfatta.

Come soluzione kludgy ho solo commentato le linee di controllo del file di stampa in modo che solo le seguenti righe sono lasciati:

pyspark_submit_args = os.environ.get("PYSPARK_SUBMIT_ARGS", "") 
if not "pyspark-shell" in pyspark_submit_args: pyspark_submit_args += " pyspark-shell" 
os.environ["PYSPARK_SUBMIT_ARGS"] = pyspark_submit_args 
Problemi correlati