Зачем мне нужен os.environ в моей программе pyspark? - PullRequest
0 голосов
/ 26 мая 2020

Я создал простую программу для проверки моей первой настройки среды apache -spark с использованием pyspark и получил ошибку, которая кажется очень распространенной в StackOverflow: Exception: Python in worker has different version 2.7 than that in driver 3.7.

Я нашел несколько исправлений и единственное, что сработало для меня, - это добавить следующую строку в сценарий: os.environ["PYSPARK_PYTHON"]="/Users/username/Library/miniconda3/envs/env_name/bin/python"

У меня есть переменные, установленные в ОБЕИХ ~/.zshrc И в $SPARK_HOME/conf/spark-env.sh:

export PYSPARK_PYTHON=/Users/username/Library/miniconda3/envs/env_name/bin/python
export PYSPARK_DRIVER_PYTHON=/Users/username/Library/miniconda3/envs/env_name/bin/python

Все переменные среды указывают на тот же путь python 3.7, который использует простая программа. Если я запускаю pyspark из командной строки, он также указывает 3.7. Опять же, он работает с os.environ, но мой вопрос: зачем это нужно, если я настроил свои драйверы и рабочие на 3.7? Откуда взялась версия 2.7 Worker'а (до того, как я указывал os.environ в скрипте)?

(я создаю код в Sublime Text на macOS Catalina. Переменные среды указывают на и мои код работает в среде conda, работающей на python 3.7)

1 Ответ

1 голос
/ 26 мая 2020

Если у вас есть какие-либо определенные пользователем переменные среды, вам необходимо включить в код os.environ . Когда вы экспортируете переменную, она будет применима только для этого сеанса, и код завершится ошибкой, если он будет выполнен через некоторое время. os.environ управляет такого рода проблемами, обеспечивая направление к определенным пользователем переменным среды.

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