Si quelqu'un tombe dessus comme moi et travaille sur un cluster mais avec la nécessité d'exécuter des scripts locaux sur un nœud cible .
SOLUTION
La solution infaillible la plus simple serait de définir PYSPARK_PYTHON env au début du script, car dans mon cas, pyspark-shell ne pouvait pas le récupérer même s'il était configuré correctement dans $SPARK_HOME/conf/spark-env.sh
ou même dans spark-defaults.conf
et ~/.bashrc
(tous deux moins souhaitables que la première option).
import os
os.environ['PYSPARK_PYTHON'] = '/path/to/python3' # Worker executable
os.environ['PYSPARK_DRIVER_PYTHON'] = '/path/to/python3' # Driver executable
CAUSE PROBABLE
Je ne suis pas tout à fait sûr, mais je suppose que pyspark installé à partir de pip dans votre venv est différent de celui qui est réellement chargé par Spark lui-même et il ne trouve pas la bonne variable env, recourant aux exécutables python 2.7 par défaut malgré sa configuration partout.