2016-07-29 31 views
2

Wenn ich versuche, eine SparkDF (Test) zu zeigen, bekomme ich einen KeyError, wie unten gezeigt. Wahrscheinlich passiert etwas in der Funktion, die ich vor Test.show(3) verwendet habe.KeyError: 'SPARK_HOME' in pyspark auf Jupyter auf Google-Cloud-DataProc

Der KeyError sagt: KeyError: 'SPARK_HOME'. Ich nehme an, SPARK_HOME ist nicht auf dem Master und/oder Worker definiert. Gibt es eine Möglichkeit, das SPARK_HOME-Verzeichnis automatisch auf beiden zu spezifizieren? Vorzugsweise unter Verwendung einer Initialisierungsaktion.

Py4JJavaErrorTraceback (jüngste Aufforderung zuletzt) ​​ in() ----> 1 Test.show (3)

/usr/lib/spark/python/pyspark/sql/dataframe.py in show(self, n, truncate) 
    255   +---+-----+ 
    256   """ 
--> 257   print(self._jdf.showString(n, truncate)) 
    258 
    259  def __repr__(self): 

...

raise KeyError(key) 
KeyError: 'SPARK_HOME' 

Antwort

2

können Sie einfach die setzen folgende in einer Initialisierungsaktion:

#!/bin/bash 

cat << EOF | tee -a /etc/profile.d/custom_env.sh /etc/*bashrc >/dev/null 
export SPARK_HOME=/usr/lib/spark/ 
EOF 

Sie wollen feststellen, dass setzen in es Aktion vor Ihrer Jupyter-Installation Aktion, um sicherzustellen, dass es vorhanden ist, wenn der Jupyter-Prozess gestartet wird.

Edit: So geben die beiden init Aktionen, können Sie sie in eine durch Kommata getrennte Liste ohne Leerzeichen, wie diese Liste kann:

gcloud dataproc clusters create \ 
    --initialization-actions gs://mybucket/spark_home.sh,gs://mybucket/jupyter.sh ... 
+0

die Initialisierungsaktion Hinzufügen nicht das Problem lösen. Ich habe versucht, den obigen Code in die Jupyter-Init-Aktion (ohne Hashbang) und auch als separate Init-Aktion vor der Jupyter-Init-Aktion zu setzen. – Stijn

+0

Wie Sie vorgeschlagen haben, habe ich ein Bash-Skript (spark_home.sh) erstellt, das den oben angegebenen Inhalt enthält. Selbst wenn ich dies als Initialisierungsaktion einbeziehe, erhalte ich den Funken-Home-Fehler. 'gcloud dataproc clusters erstellen cluster --zone = europe-west1-d --master-maschine-type n1-standard-4 --master-boot-disk-größe 100 --num-worker 2 --arbeiter-maschinen-type n1-standard-2 --worker-boot-disk-size 50 --projekt meinprojekt --bucket mybucket --initialisierungsaktionen gs: //stijnbucket/sh/spark_home.sh --initialisierungsaktionen gs: // stijnbucket/sh/jupyter.sh' – Stijn

+0

Nach der Verwendung dieser Initialisierung Aktion, wenn Sie SSH in den Master-Knoten und geben Sie echo $ {SPARK_HOME} 'zeigt es als richtig eingestellt zumindest für den angemeldeten Fall? –