Si alguien tropezó con esto como yo y está trabajando en un clúster pero necesita ejecutar algunos scripts locales en un nodo de destino .
SOLUCIÓN
La solución más fácil e infalible sería establecer PYSPARK_PYTHON env al comienzo del script, ya que en mi caso, pyspark-shell no pudo detectarlo incluso si se configuró correctamente en $SPARK_HOME/conf/spark-env.sh
o incluso en spark-defaults.conf
y ~/.bashrc
(ambas menos deseables que la primera opción).
import os
os.environ['PYSPARK_PYTHON'] = '/path/to/python3' # Worker executable
os.environ['PYSPARK_DRIVER_PYTHON'] = '/path/to/python3' # Driver executable
CAUSA PROBABLE
No estoy del todo seguro, pero supongo que pyspark instalado desde pip en su venv es diferente al que realmente carga Spark y no encuentra la variable env correcta, recurriendo a los ejecutables predeterminados de python 2.7 a pesar de configurarlo en todas partes.