Ich möchte eine IPython-Shell (nicht ein IPython-Notizbuch) laden, in der ich PySpark über die Befehlszeile verwenden kann. Ist das möglich? Ich habe Spark-1.4.1 installiert.
7 Antworten
Wenn Sie Spark <1.2 verwenden, können Sie bin/pyspark
einfach mit einer Umgebungsvariablen IPYTHON=1
ausführen.
IPYTHON=1 /path/to/bin/pyspark
Oder
export IPYTHON=1
/path/to/bin/pyspark
Während oben weiterhin mit Spark 1.2 und höher funktioniert, wird empfohlen, die Python-Umgebung für diese Versionen festzulegen: PYSPARK_DRIVER_PYTHON
PYSPARK_DRIVER_PYTHON=ipython /path/to/bin/pyspark
Oder
export PYSPARK_DRIVER_PYTHON=ipython
/path/to/bin/pyspark
Sie können ipython
durch einen Pfad zum Interpreter Ihrer Wahl ersetzen.
Keine der genannten Antworten hat bei mir funktioniert. Ich habe immer den Fehler bekommen:
.../pyspark/bin/load-spark-env.sh: No such file or directory
Ich habe ipython
gestartet und die Spark-Sitzung manuell erstellt:
from pyspark.sql import SparkSession
spark = SparkSession\
.builder\
.appName("example-spark")\
.config("spark.sql.crossJoin.enabled","true")\
.getOrCreate()
Um dies nicht jedes Mal zu tun, habe ich den Code nach ~/.ispark.py
verschoben und den folgenden Alias erstellt (fügen Sie diesen zu ~/.bashrc
hinzu):
alias ipyspark="ipython -i ~/.ispark.py"
Danach können Sie PySpark mit iPython starten, indem Sie Folgendes eingeben:
ipyspark
Wenn die Version von spark> = 2.0 und die folgende Konfiguration zu .bashrc hinzugefügt werden könnten
export PYSPARK_PYTHON=/data/venv/your_env/bin/python
export PYSPARK_DRIVER_PYTHON=/data/venv/your_env/bin/ipython
Diese Antwort ist eine angepasste und verkürzte Version eines ähnlichen Beitrags auf meiner Website: https://jupyter.ai/pyspark-session/
Ich verwende ptpython (1) , das die ipython -Funktionalität sowie die Wahl zwischen vi (1) oder emacs (1) bietet ) Tastenkombinationen. Es bietet auch Popup / Intelligenz für dynamisches Code, was äußerst nützlich ist, wenn Sie Ad-hoc-SPARK-Arbeiten an der CLI ausführen oder einfach versuchen, die Spark-API zu erlernen.
So sieht meine vi -aktivierte ptpython -Sitzung aus, wobei Sie den VI (INSERT) -Modus am unteren Rand des Screehshots als beachten sowie die Eingabeaufforderung im ipython -Stil, um anzuzeigen, dass diese ptpython -Funktionen ausgewählt wurden (mehr dazu, wie Sie sie in einem Moment auswählen können):
Um all dies zu erhalten, führen Sie die folgenden einfachen Schritte aus: :
user@linux$ pip3 install ptpython # Everything here assumes Python3
user@linux$ vi ${SPARK_HOME}/conf/spark-env.sh
# Comment-out/disable the following two lines. This is necessary because
# they take precedence over any UNIX environment settings for them:
# PYSPARK_PYTHON=/path/to/python
# PYSPARK_DRIVER_PYTHON=/path/to/python
user@linux$ vi ${HOME}/.profile # Or whatever your login RC-file is.
# Add these two lines:
export PYSPARK_PYTHON=python3 # Fully-Qualify this if necessary. (python3)
export PYSPARK_DRIVER_PYTHON=ptpython3 # Fully-Qualify this if necessary. (ptpython3)
user@linux$ . ${HOME}/.profile # Source the RC file.
user@linux$ pyspark
# You are now running pyspark(1) within ptpython; a code pop-up/interactive
# shell; with your choice of vi(1) or emacs(1) key-bindings; and
# your choice of ipython functionality or not.
Um Ihre Pypython -Einstellungen auszuwählen (und es gibt eine Reihe davon), drücken Sie einfach in einer Ptpython -Sitzung F2 und wählen Sie die gewünschten Optionen aus wollen.
SCHLUSSHINWEIS : Wenn Sie eine Python Spark-Anwendung einreichen (im Gegensatz zur Interaktion mit pyspark (1) über die CLI, wie oben gezeigt), setzen Sie einfach PYSPARK_PYTHON und PYSPARK_DRIVER_PYTHON programmgesteuert in Python, wie folgt:
os.environ['PYSPARK_PYTHON'] = 'python3'
os.environ['PYSPARK_DRIVER_PYTHON'] = 'python3' # Not 'ptpython3' in this case.
Ich hoffe, diese Antwort und Einrichtung ist nützlich.
Was ich als hilfreich empfunden habe, ist das Schreiben von Bash-Skripten, die Spark auf eine bestimmte Weise laden. Auf diese Weise können Sie Spark auf einfache Weise in verschiedenen Umgebungen starten (z. B. Ipython und ein Jupyter-Notebook).
Öffnen Sie dazu ein leeres Skript (mit einem beliebigen Texteditor), z. B. ipython_spark.sh
In diesem Beispiel werde ich das Skript bereitstellen, mit dem ich Spark mit dem Ipython-Interpreter öffne:
#!/bin/bash
export PYSPARK_DRIVER_PYTHON=ipython
${SPARK_HOME}/bin/pyspark \
--master local[4] \
--executor-memory 1G \
--driver-memory 1G \
--conf spark.sql.warehouse.dir="file:///tmp/spark-warehouse" \
--packages com.databricks:spark-csv_2.11:1.5.0 \
--packages com.amazonaws:aws-java-sdk-pom:1.10.34 \
--packages org.apache.hadoop:hadoop-aws:2.7.3
Beachten Sie, dass ich SPARK_HOME in meinem bash_profile definiert habe, aber Sie können einfach den gesamten Pfad an die Stelle einfügen, an der sich pyspark auf Ihrem Computer befindet
Ich möchte alle Skripte wie dieses an einem Ort ablegen, also lege ich diese Datei in einen Ordner namens "Skripte".
Für dieses Beispiel müssen Sie nun zu Ihrem bash_profile gehen und die folgenden Zeilen eingeben:
export PATH=$PATH:/Users/<username>/scripts
alias ispark="bash /Users/<username>/scripts/ipython_spark.sh"
Diese Pfade hängen davon ab, wo Sie ipython_spark.sh ablegen. Anschließend müssen Sie möglicherweise die Berechtigungen aktualisieren:
$ chmod 711 ipython_spark.sh
Und Quelle dein bash_profile:
$ source ~/.bash_profile
Ich bin auf einem Mac, aber dies sollte auch unter Linux funktionieren, obwohl Sie höchstwahrscheinlich .bashrc anstelle von bash_profile aktualisieren werden.
Was mir an dieser Methode gefällt, ist, dass Sie mehrere Skripte mit unterschiedlichen Konfigurationen schreiben und den Funken entsprechend öffnen können. Abhängig davon, ob Sie einen Cluster einrichten, verschiedene Pakete laden oder die Anzahl der Kerne ändern müssen, über die Spark verfügt usw. Sie können dieses Skript entweder aktualisieren oder neue erstellen. Wie durch @ zero323 oben angegeben, ist PYSPARK_DRIVER_PYTHON = die korrekte Syntax für Spark> 1.2. Ich verwende Spark 2.2
Folgendes hat bei mir funktioniert:
# if you run your ipython with 2.7 version with ipython2
# whatever you use for launching ipython shell should come after '=' sign
export PYSPARK_DRIVER_PYTHON=ipython2
Und dann aus dem SPARK_HOME-Verzeichnis:
./bin/pyspark
Laut dem offiziellen Github ist IPYTHON = 1 in Spark 2.0+ nicht verfügbar. Verwenden Sie stattdessen PYSPARK_PYTHON und PYSPARK_DRIVER_PYTHON.
https://github.com/apache/spark/blob/master/bin/pyspark
Verwandte Fragen
Neue Fragen
python
Python ist eine dynamisch typisierte Mehrzweck-Programmiersprache mit mehreren Paradigmen. Es wurde entwickelt, um schnell zu lernen, zu verstehen, zu verwenden und eine saubere und einheitliche Syntax durchzusetzen. Bitte beachten Sie, dass Python 2 ab dem 01.01.2020 offiziell nicht mehr unterstützt wird. Fügen Sie für versionenspezifische Python-Fragen das Tag [python-2.7] oder [python-3.x] hinzu. Wenn Sie eine Python-Variante (z. B. Jython, PyPy) oder eine Bibliothek (z. B. Pandas und NumPy) verwenden, fügen Sie diese bitte in die Tags ein.