Nếu ai đó tình cờ gặp phải vấn đề này như tôi và đang làm việc trên một cụm nhưng với nhu cầu chạy một số tập lệnh cục bộ trên một nút đích .
GIẢI PHÁP
Giải pháp dễ hiểu nhất sẽ là đặt PYSPARK_PYTHON env ở đầu tập lệnh, vì trong trường hợp của tôi, pyspark-shell không thể nhận nó ngay cả khi được định cấu hình đúng trong $SPARK_HOME/conf/spark-env.sh
hoặc thậm chí trong spark-defaults.conf
và ~/.bashrc
(cả hai đều ít mong muốn hơn so với tùy chọn đầu tiên).
import os
os.environ['PYSPARK_PYTHON'] = '/path/to/python3' # Worker executable
os.environ['PYSPARK_DRIVER_PYTHON'] = '/path/to/python3' # Driver executable
NGUYÊN NHÂN CÓ THỂ
Tôi không hoàn toàn chắc chắn, nhưng suy đoán của tôi là pyspark được cài đặt từ pip trong venv của bạn khác với pyspark thực sự được tải bởi chính Spark và nó không tìm thấy biến env chính xác, sử dụng tệp thực thi python 2.7 mặc định mặc dù đã định cấu hình nó ở khắp mọi nơi.