Как правильно выбрать версию Python в виртуальной среде? - PullRequest
0 голосов
/ 10 декабря 2018

Я создаю виртуальную среду и запускаю скрипт PySpark.Если я делаю эти шаги на MacOS, все работает нормально.Однако, если я запускаю их в Linux (Ubuntu 16), то выбирается неправильная версия Python.Конечно, я ранее делал export PYSPARK_PYTHON=python3 в Linux, но все еще та же проблема.Ниже я объясняю все шаги:

1. edit profile :vim ~/.profile

2. add the code into the file: export PYSPARK_PYTHON=python3

3. execute command:  source ~/.profile

Затем я делаю:

pip3 install --upgrade pip
pip3 install virtualenv
wget https://archive.apache.org/dist/spark/spark-2.4.0/spark-2.4.0-bin-hadoop2.7.tgz
tar -xvzf spark-2.4.0-bin-hadoop2.7.tgz && rm spark-2.4.0-bin-hadoop2.7.tgz

virtualenv tes-ve 
source test-ve/bin/activate && pip install -r requirements.txt

Если я выполню python --version в визуальной среде, я вижу Python 3.5.2.

Однако когда я запускаю код Spark с помощью этой команды: sudo /usr/local/spark-2.4.0-bin-hadoop2.7/bin/spark-submit mySpark.py, я получаю Using Python version 2.7... для этих строк кода:

print("Using Python version %s (%s, %s)" % (
    platform.python_version(),
    platform.python_build()[0],
    platform.python_build()[1]))

1 Ответ

0 голосов
/ 10 декабря 2018

PYSPARK_PYTHON устанавливает вызов, который используется для выполнения Python на подчиненных узлах.Существует отдельная переменная окружения с именем PYSPARK_DRIVER_PYTHON, которая устанавливает вызов для узла драйвера (т. Е. Узла, на котором изначально запускается ваш скрипт).Поэтому вам также нужно установить PYSPARK_DRIVER_PYTHON=python3.

Редактировать

Как указывает phd, у вас могут возникнуть проблемы с вашей средой, поскольку вы используете sudo для вызова Pyspark для отправки,Одна вещь, которую можно попробовать, это использовать sudo -E вместо sudo.Опция -E будет сохранять вашу среду (хотя она и не идеальна).

Если это не удастся, вы можете попробовать установить параметры spark.pyspark.driver.python и spark.pyspark.python напрямую.Например, вы можете передать желаемые значения в свой вызов на spark-submit:

sudo /usr/local/spark-2.4.0-bin-hadoop2.7/bin/spark-submit --conf spark.pyspark.driver.python=python3 --conf spark.pyspark.python=python3 mySpark.py

Существует множество различных способов установить эти параметры (см. этот документ для получения полной информации),Если один не работает / неудобен для вас, попробуйте другой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...