Jeśli ktoś natknął się na to jak ja i pracuje nad klastrem, ale musi uruchomić kilka lokalnych skryptów na węźle docelowym .
ROZWIĄZANIE
Najłatwiejszym niezawodnym rozwiązaniem byłoby ustawienie env PYSPARK_PYTHON na początku skryptu, ponieważ w moim przypadku pyspark-shell nie mógł go odebrać, nawet jeśli został poprawnie skonfigurowany w $SPARK_HOME/conf/spark-env.sh
lub nawet w spark-defaults.conf
i ~/.bashrc
(obie mniej pożądane niż pierwsza opcja).
import os
os.environ['PYSPARK_PYTHON'] = '/path/to/python3' # Worker executable
os.environ['PYSPARK_DRIVER_PYTHON'] = '/path/to/python3' # Driver executable
PRAWDOPODOBNA PRZYCZYNA
Nie jestem do końca pewien, ale domyślam się, że pyspark zainstalowany z pip w twoim venv jest inny niż ten, który jest faktycznie ładowany przez samego Sparka i nie znajduje prawidłowej zmiennej env, uciekając się do domyślnych plików wykonywalnych Pythona 2.7 pomimo konfiguracji wszędzie.