Konfigurieren der Funke auch auf die Arbeit mit Jupyter Notebook und Anaconda
Ich habe ein paar Tage jetzt versucht zu machen, Funke funktioniert mit meinem Jupyter Notebook und Anaconda. Hier ist, was mein .bash_profile sieht wie folgt aus:
PATH="/my/path/to/anaconda3/bin:$PATH"
export JAVA_HOME="/my/path/to/jdk"
export PYTHON_PATH="/my/path/to/anaconda3/bin/python"
export PYSPARK_PYTHON="/my/path/to/anaconda3/bin/python"
export PATH=$PATH:/my/path/to/spark-2.1.0-bin-hadoop2.7/bin
export PYSPARK_DRIVER_PYTHON=jupyter
export PYSPARK_DRIVER_PYTHON_OPTS="notebook" pyspark
export SPARK_HOME=/my/path/to/spark-2.1.0-bin-hadoop2.7
alias pyspark="pyspark --conf spark.local.dir=/home/puifais --num-executors 30 --driver-memory 128g --executor-memory 6g --packages com.databricks:spark-csv_2.11:1.5.0"
Geben, wenn ich /my/path/to/spark-2.1.0-bin-hadoop2.7/bin/spark-shell
, ich kann starten Spark Prima in meine Befehlszeilen-shell. Und die Ausgabe sc
ist nicht leer. Es scheint gut zu funktionieren.
Geben, wenn ich pyspark
es startet mein Jupyter Notebook in Ordnung. Wenn ich erstellen Sie eine neue Python ist3 notebook, dieser Fehler angezeigt:
[IPKernelApp] WARNING | Unknown error in handling PYTHONSTARTUP file /my/path/to/spark-2.1.0-bin-hadoop2.7/python/pyspark/shell.py:
Sowie sc
in meinem Jupyter Notebook ist leer.
Kann mir jemand helfen, lösen Sie diese situation?
Wollen einfach nur, um es klarzustellen: Es gibt nichts nach dem Doppelpunkt am Ende der Fehler. Ich habe auch versucht, mein eigenes start-up-Datei mit diesem post und ich zitiere hier, so dass Sie nicht haben, zu gehen, sehen Sie dort:
Erstellte ich eine kurze Initialisierung Skript init_spark.py wie folgt:
from pyspark import SparkConf, SparkContext conf = SparkConf().setMaster("yarn-client") sc = SparkContext(conf = conf)
und legte es in die ~/.ipython/profile_default/startup/Verzeichnis
Als ich dies Tat, der Fehler wurde dann:
[IPKernelApp] WARNING | Unknown error in handling PYTHONSTARTUP file /my/path/to/spark-2.1.0-bin-hadoop2.7/python/pyspark/shell.py:
[IPKernelApp] WARNING | Unknown error in handling startup files:
- Was ist der rest von dem text der Warnung? Es ist ein Doppelpunkt am Ende der Zeile, gibt es etwas, was danach kommt?
- Nein! Es ist leer. Es gibt nichts nach dem Komma.
- Was ist, wenn Sie Sie löschen, die
alias
Linie, oder löschen Sie einige der Optionen aus oder? Tritt der Fehler ändern? - Nur versucht haben, entfernen Sie den alias. Kein Unterschied. Immer noch der gleiche Fehler 🙁
- Hier ist ein Weiterführender link, das könnte vielleicht helfen, stackoverflow.com/questions/33908156/.... Hinzufügen pyspark-shell PYSPARK_SUBMIT_ARGS ist der Schlüssel.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Conda können helfen, richtig zu verwalten eine Menge von Abhängigkeiten...
Installieren Funken. Vorausgesetzt spark ist installiert in /opt/Funke, gehören diese in deine ~/.bashrc:
Erstellen Sie eine conda Umgebung mit allen benötigten Abhängigkeiten abgesehen von spark:
Aktivieren Sie die Umwelt
Starten Jupyter Notebook server:
In Ihrem browser, erstellen Sie eine neue Python ist3 notebook
Versuchen Sie, die Berechnung von PI mit dem folgenden Skript (ausgeliehen von diese)
Tja, es gibt mir Schmerzen, zu sehen, wie beschissen hacks, wie die Einstellung
PYSPARK_DRIVER_PYTHON=jupyter
wurden gefördert, um "Lösungen", und neigen dazu, von nun an standard-Praktiken, trotz der Tatsache, dass Sie offenbar dazu führen hässlich die Ergebnisse, wie die Eingabepyspark
und enden mit einem Jupyter notebook statt eines PySpark shell, plus noch ungesehene Probleme lauern downstream, wie wenn Sie versuchen Sie, verwenden Siespark-submit
mit den oben genannten Einstellungen... 🙁(Versteh mich nicht falsch, es ist nicht deine Schuld und ich bin nicht Schuld; ich habe gesehen, Dutzende von Postings hier bei wo diese "Lösung" vorgeschlagen wurde, angenommen und von Ihnen positiv bewertet werden...).
Es gibt eine und nur eine richtige Möglichkeit zum anpassen Jupyter notebook ist für die Arbeit mit anderen Sprachen (PySpark hier), und dies ist die Verwendung von Jupyter Kernel.
Das erste, was zu tun ist, führen Sie eine
jupyter kernelspec list
Befehl, um die Liste aller bereits verfügbaren Kerne in Ihrem Rechner haben; hier ist das Ergebnis in meinem Fall (Ubuntu):Den ersten kernel
python2
ist der "Standard" kommt mit IPython (es ist eine große chance, diese Wesen, die nur eine in Ihrem system vorhanden); für den rest habe ich 2 weitere Python-Kernel (caffe
&tensorflow
), ein R (ir
), und zwei PySpark Kernel für die Verwendung mit Spark 1.6 und Spark 2.0 bzw..Die Einträge in der obigen Liste sind Verzeichnisse, und jedes enthält eine einzige Datei mit dem Namen
kernel.json
. Mal sehen, der Inhalt dieser Datei für meinepyspark2
kernel:Ich habe nicht die Mühe gemacht meine Angaben ändern zu
/my/path/to
etc., und man kann schon sehen, dass es einige Unterschiede zwischen unseren Fällen (ich benutze Intel Python 2.7 und nicht Anaconda Python 3), aber hoffentlich bekommen Sie die Idee (BTW, Mach dir keine sorgen über dieconnection_file
- ich glaube nicht, verwenden Sie eine).Nun, der einfachste Weg für Sie wäre, um manuell die notwendigen änderungen (Pfade nur) an meine oben angegebene kernel und speichern Sie es in einem neuen Unterordner des
.../jupyter/kernels
- Verzeichnis (so sollte es sichtbar sein, wenn Sie führen Sie wieder einjupyter kernelspec list
- Befehl). Und wenn Sie denken, dieser Ansatz ist auch ein hack, naja, ich würde mit Ihnen einverstanden, aber der ist es empfohlen in der Jupyter Dokumentation (Seite 12):Wenn Sie nicht schon eine
.../jupyter/kernels
Ordner, können Sie immer noch installieren Sie einen neuen kerneljupyter kernelspec install
- habe es nicht ausprobiert, aber haben Sie einen Blick auf diese SO beantworten.Schließlich, vergessen Sie nicht entfernen Sie alle PySpark-bezogenen Umgebungsvariablen aus deinem bash-profile (so dass nur
SPARK_HOME
sollte OK sein). Und bestätigen Sie, dass, wenn Sie gebenpyspark
, finden Sie sich mit einem PySpark shell, wie es sein sollte, und nicht mit einem Jupyter notebook...UPDATE (nach Kommentar): Wenn Sie möchten, übergeben Sie Befehl Linie Argumente, um PySpark, sollten Sie die
PYSPARK_SUBMIT_ARGS
Einstellung unterenv
; zum Beispiel, hier ist die Letzte Zeile des jeweiligen kernel-Datei für Spark 1.6.0, wo wir noch die externe spark-csv-Paket für das Lesen von CSV-Dateien:Saprk 2.2.1
undPython 3.6
. Können Sie mir raten, wie Sie angeben, die pyspark kernel beim starten jupyter notebook vom terminaljupyter notebook
und sich an den Notebook-dashboard, bei der Auswahl Neuer, erhalten Sie ein pull-down-Menü alle vorhandenen Kernel, in dem Sie angeben können, welche Sie verwenden möchten (Kerne angezeigt werden w Ihrer jeweiligendisplay_name
Feld aus derkernel.json
- Datei siehe oben). Siehe die Beispiel hier[TOREE-487][TOREE-488] Remove PySpark and SparkR interpreters Instead, please use a supported kernel such IPython or IRKernel
Dieser Beitrag ist ein Lebensretter.locate spark
können verwendet werden, um zu identifizieren, den richtigen Weg. Das dauerte einige Zeit, aber sobald ich in der Lage war, zu finden den richtigen Weg, traf ich Sie mit dem, was @desertnaut sagte. Vielen Dank so viel für diese!Nachdem das hantieren hier ein wenig, ich habe gerade conda installiert sparkmagic (nach der neu-Installation eine neuere version von Spark).
Ich denke, dass allein funktioniert einfach.
Ich bin nicht sicher, da habe ich fummelte ein wenig davor, aber ich lege dies als eine vorläufige Antwort, denn es ist viel einfacher als das hantieren Konfigurationsdateien von hand.