Wenn jemand wie ich darüber gestolpert ist und an einem Cluster arbeitet, aber einige lokale Skripte auf einem Zielknoten ausführen muss .
LÖSUNG
Die einfachste idiotensichere Lösung wäre das Setzen von PYSPARK_PYTHON env am Anfang des Skripts, da pyspark-shell es in meinem Fall nicht abrufen konnte, selbst wenn es in $SPARK_HOME/conf/spark-env.sh
richtig konfiguriert war oder sogar in spark-defaults.conf
und ~/.bashrc
(beides weniger wünschenswert als die erste Option).
import os
os.environ['PYSPARK_PYTHON'] = '/path/to/python3' # Worker executable
os.environ['PYSPARK_DRIVER_PYTHON'] = '/path/to/python3' # Driver executable
MÖGLICHE URSACHE
Ich bin mir nicht ganz sicher, aber ich vermute, dass pyspark, das von pip in Ihrem venv installiert wurde, anders ist als das, das tatsächlich von Spark selbst geladen wird, und es findet nicht die richtige env-Variable und greift trotz der Konfiguration auf die standardmäßigen ausführbaren Python 2.7-Dateien zurück es überall.