Se qualcuno si è imbattuto in questo come me e sta lavorando su un cluster ma con la necessità di eseguire alcuni script locali su un nodo di destinazione .
SOLUZIONE
La soluzione più semplice e infallibile sarebbe impostare PYSPRK_PYTHON env all'inizio dello script, dal momento che nel mio caso pyspark-shell non potrebbe raccoglierlo anche se configurato correttamente in $SPARK_HOME/conf/spark-env.sh
o anche in spark-defaults.conf
e ~/.bashrc
(entrambi meno desiderabili della prima opzione).
import os
os.environ['PYSPARK_PYTHON'] = '/path/to/python3' # Worker executable
os.environ['PYSPARK_DRIVER_PYTHON'] = '/path/to/python3' # Driver executable
PROBABILE CAUSA
Non sono del tutto sicuro, ma suppongo che pyspark installato da pip nel tuo venv sia diverso da quello effettivamente caricato da Spark stesso e non trova la variabile env corretta, ricorrendo all'eseguibile python 2.7 predefinito nonostante lo abbia configurato ovunque.