Ако някой се е натъкнал на това като мен и работи върху клъстер, но има нужда да изпълнява някои локални скриптове на целеви възел .
РЕШЕНИЕ
Най-лесното безпогрешно решение би било да зададете PYSPARK_PYTHON env в началото на скрипта, тъй като в моя случай pyspark-shell не може да го вземе, дори ако е конфигуриран правилно в $SPARK_HOME/conf/spark-env.sh
или дори в spark-defaults.conf
и ~/.bashrc
(и двете по-малко желани от първата опция).
import os
os.environ['PYSPARK_PYTHON'] = '/path/to/python3' # Worker executable
os.environ['PYSPARK_DRIVER_PYTHON'] = '/path/to/python3' # Driver executable
ВЪЗМОЖНА ПРИЧИНА
Не съм напълно сигурен, но предполагам, че pyspark, инсталиран от pip във вашия venv, е различен от този, който всъщност е зареден от самия Spark и не намира правилната променлива env, прибягвайки до изпълнимите файлове на Python 2.7 по подразбиране, въпреки че го конфигурира навсякъде.