Om någon snubblat på det här som jag och arbetar på ett kluster men med behovet av att köra några lokala skript på en målnod .
LÖSNING
Den enklaste idiotsäkra lösningen skulle vara att ställa in PYSPARK_PYTHON env i början av skriptet, eftersom pyspark-shell i mitt fall inte kunde ta upp det även om det konfigurerades korrekt i $SPARK_HOME/conf/spark-env.sh
eller till och med i spark-defaults.conf
och ~/.bashrc
(båda mindre önskvärda än det första alternativet).
import os
os.environ['PYSPARK_PYTHON'] = '/path/to/python3' # Worker executable
os.environ['PYSPARK_DRIVER_PYTHON'] = '/path/to/python3' # Driver executable
TROLIG ORSAK
Jag är inte helt säker, men min gissning är att pyspark installerad från pip i din venv är annorlunda än den som faktiskt laddas av Spark själv och den hittar inte den korrekta env-variabeln, och använder standardpython 2.7-körbara filer trots att den har konfigurerats överallt.