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.

33
pg2455 6 Aug. 2015 im 20:36

7 Antworten

Beste Antwort

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.

40
zero323 6 Aug. 2015 im 20:10

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
2
stasdeep 4 Mai 2018 im 08:15

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
2
shengshan zhang 12 Sept. 2017 im 04:01

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):

enter image description here

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.

9
NYCeyes 31 Jän. 2020 im 17:47

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

1
Jomonsugi 17 Juli 2017 im 06:43

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
2
pg2455 1 Sept. 2015 im 15:21

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

2
Yang Bryan 12 Juli 2017 im 10:14