Как я могу установить Python версии драйвера в Искра?
Я использую spark 1.4.0-rc2, поэтому я могу использовать python 3 с spark. Если я добавлю export PYSPARK_PYTHON=python3 к моему .файл bashrc, я могу запустить spark в интерактивном режиме с python 3. Однако, если я хочу запустить автономную программу в локальном режиме, я получаю сообщение об ошибке:
Exception: Python in worker has different version 3.4 than that in driver 2.7, PySpark cannot run with different minor versions
как я могу указать версию python для драйвера? Установка export PYSPARK_DRIVER_PYTHON=python3 не работает.
13 ответов:
вы должны убедиться, что автономный проект, который вы запускаете, запускается с python 3. Если вы отправляете свою автономную программу через spark-submit, то она должна работать нормально, но если вы запускаете ее с python, убедитесь, что вы используете python3 для запуска своего приложения.
также убедитесь, что вы установили переменные env в
./conf/spark-env.sh(если она не существует, вы можете использоватьspark-env.sh.templateв качестве базы.
задание
PYSPARK_PYTHON=python3иPYSPARK_DRIVER_PYTHON=python3оба для python3 работает для меня. Я сделал это с помощью экспорта в моем .bashrc следующее. В конце концов, это переменные, которые я создаю:export SPARK_HOME="$HOME/Downloads/spark-1.4.0-bin-hadoop2.4" export IPYTHON=1 export PYSPARK_PYTHON=/usr/bin/python3 export PYSPARK_DRIVER_PYTHON=ipython3 export PYSPARK_DRIVER_PYTHON_OPTS="notebook"Я также следовал этому учебнику, чтобы заставить его работать из ноутбука Ipython3: http://ramhiser.com/2015/02/01/configuring-ipython-notebook-support-for-pyspark/
помогло в моем случае:
import os os.environ["SPARK_HOME"] = "/usr/local/Cellar/apache-spark/1.5.1/" os.environ["PYSPARK_PYTHON"]="/usr/local/bin/python3"
вы можете указать версию Python для драйвера, установив соответствующие переменные среды в . Если он еще не существует, вы можете использовать
spark-env.sh.templateфайл, который также включает в себя множество других переменных.вот простой пример
spark-env.shфайл для установки соответствующих переменных среды Python:#!/usr/bin/env bash # This file is sourced when running various Spark programs. export PYSPARK_PYTHON=/usr/bin/python3 export PYSPARK_DRIVER_PYTHON=/usr/bin/ipythonв этом случае он устанавливает версию Python, используемую рабочими / исполнителями, в Python3 и версию драйвера Python для iPython для более приятной оболочки для работы.
если у вас еще нет
spark-env.shfile, и не нужно устанавливать какие-либо другие переменные, это должно делать то, что вы хотите, предполагая, что пути к соответствующим двоичным файлам python верны (проверьте с помощьюwhich). У меня была аналогичная проблема, и это исправило ее.
Я просто столкнулся с той же проблемой, и это шаги, которые я следую, чтобы обеспечить версию Python. Я хотела PySpark работы с Python 2.7, а не 2.6.
перейдите в папку, где
$SPARK_HOMEуказывает на (в моем случае это/home/cloudera/spark-2.1.0-bin-hadoop2.7/)в папке
confесть файл под названиемspark-env.sh. в случае, если у вас есть файл под названиемspark-env.sh.templateвам нужно будет скопировать файл в новый файлspark-env.sh.отредактируйте файл и напишите следующие три строки
export PYSPARK_PYTHON= / usr / local/bin / python2.7
экспорт PYSPARK_DRIVER_PYTHON= / usr / local / bin / python2.7
экспорт SPARK_YARN_USER_ENV= "PYSPARK_PYTHON= / usr / local / bin / python2. 7"
сохраните его и снова запустите приложение:)
таким образом, если вы загрузите новую автономную версию Spark, вы можете установить версию Python, которую вы хотите запустить PySpark.
я запускал его в IPython (как описано в этом ссылка Яцека Василевского ) и получал это исключение; добавлено
PYSPARK_PYTHONв файл ядра IPython и использовал ноутбук jupyter для запуска и начал работать.vi ~/.ipython/kernels/pyspark/kernel.json { "display_name": "pySpark (Spark 1.4.0)", "language": "python", "argv": [ "/usr/bin/python2", "-m", "IPython.kernel", "--profile=pyspark", "-f", "{connection_file}" ], "env": { "SPARK_HOME": "/usr/local/spark-1.6.1-bin-hadoop2.6/", "PYTHONPATH": "/usr/local/spark-1.6.1-bin-hadoop2.6/python/:/usr/local/spark-1 .6.1-bin-hadoop2.6/python/lib/py4j-0.8.2.1-src.zip", "PYTHONSTARTUP": "/usr/local/spark-1.6.1-bin-hadoop2.6/python/pyspark/shell.py ", "PYSPARK_SUBMIT_ARGS": "--master spark://127.0.0.1:7077 pyspark-shell", "PYSPARK_DRIVER_PYTHON":"ipython2", "PYSPARK_PYTHON": "python2" }
Если вы используете Spark в более крупной организации и не можете обновить /spark-env.sh Файл, Экспорт переменных среды может не работать.
вы можете добавить конкретные настройки искры через
--confопция при отправке задания во время выполнения.pyspark --master yarn --[other settings]\ --conf "spark.pyspark.python=/your/python/loc/bin/python"\ --conf "spark.pyspark.driver.python=/your/python/loc/bin/python"
Я использую следующую среду
? python --version; ipython --version; jupyter --version Python 3.5.2+ 5.3.0 5.0.0и следующие псевдонимы хорошо работают для меня
alias pyspark="PYSPARK_PYTHON=/usr/local/bin/python3 PYSPARK_DRIVER_PYTHON=ipython ~/spark-2.1.1-bin-hadoop2.7/bin/pyspark --packages graphframes:graphframes:0.5.0-spark2.1-s_2.11" alias pysparknotebook="PYSPARK_PYTHON=/usr/bin/python3 PYSPARK_DRIVER_PYTHON=jupyter PYSPARK_DRIVER_PYTHON_OPTS='notebook' ~/spark-2.1.1-bin-hadoop2.7/bin/pyspark --packages graphframes:graphframes:0.5.0-spark2.1-s_2.11"в ноутбуке я настроил среду следующим образом
from pyspark.context import SparkContext sc = SparkContext.getOrCreate()
Если вы хотите изменить только версию python для текущей задачи, вы можете использовать следующую команду PySpark start:
PYSPARK_DRIVER_PYTHON=/home/user1/anaconda2/bin/python PYSPARK_PYTHON=/usr/local/anaconda2/bin/python pyspark --master ..
я наткнулся на то же сообщение об ошибке, и я попробовал три способа, упомянутых выше. Я перечислил результаты в качестве дополнительной ссылки на другие.
- изменить
PYTHON_SPARKиPYTHON_DRIVER_SPARKзначениеspark-env.shне работает для меня.- измените значение внутри скрипта python с помощью
os.environ["PYSPARK_PYTHON"]="/usr/bin/python3.5"os.environ["PYSPARK_DRIVER_PYTHON"]="/usr/bin/python3.5"не работает для меня.- изменить значение в
~/.bashrcработает как шарм~
"исключение: Python в worker имеет другую версию 2.6, чем в драйвере 2.7, PySpark не может работать с различными второстепенными версиями".
исправить (Для среды Cloudera)
редактировать этот файл:
/opt/cloudera/parcels/cdh5.5.4.p0.9/lib/spark/conf/spark-env.shдобавить эти строки:
export PYSPARK_PYTHON=/usr/bin/python export PYSPARK_DRIVER_PYTHON=python
столкнулся с этим сегодня на работе. Администратор счел разумным жестко закодировать Python 2.7 как
PYSPARK_PYTHONиPYSPARK_DRIVER_PYTHONin$SPARK_HOME/conf/spark-env.sh. Излишне говорить, что это сломало все наши рабочие места, которые используют любые другие версии python или среды (что составляет > 90% наших рабочих мест). @PhillipStich правильно указывает, что у вас не всегда могут быть разрешения на запись для этого файла, как в нашем случае. При установке конфигурации вspark-submitвызов является опцией, другой альтернативой (при работе в режиме yarn / cluster) это установитьSPARK_CONF_DIRпеременная окружения, указывающая на другой сценарий конфигурации. Там вы можете установить свой PYSPARK_PYTHON и любые другие параметры, которые вам могут понадобиться. Шаблон можно найти в spark-env.sh исходный код на github.
я получил тот же вопрос на автономный искровой на windows. Моя версия исправления выглядит так: У меня были переменные окружения, установленные как ниже
PYSPARK_SUBMIT_ARGS="pyspark-shell" PYSPARK_DRIVER_PYTHON=jupyter PYSPARK_DRIVER_PYTHON_OPTS='notebook' pysparkС этой настройкой я выполнил действие на pyspark и получил следующее исключение:
Python in worker has different version 3.6 than that in driver 3.5, PySpark cannot run with different minor versions. Please check environment variables PYSPARK_PYTHON and PYSPARK_DRIVER_PYTHON are correctly set.чтобы проверить, с какой версией python мой СПАРК-работник использует хит следующее в cmd запрос.
python --version Python 3.6.3, который показал мне Python 3.6.3. Итак, ясно, что мое СПАРК-работник использует системный python, который является v3.6.3.
теперь, как я установил мой СПАРК-драйвера чтобы запустить jupyter, установив
PYSPARK_DRIVER_PYTHON=jupyterпоэтому мне нужно проверить версию python, которую использует jupyter.для этого проверьте open Анаконда Строке и ударил
python --version Python 3.5.X :: Anaconda, Inc.здесь получил Jupyter python использует В3.5.x. Вы можете проверить эту версию также в любом ноутбуке (Справка->О Программе).
теперь мне нужно обновить jupyter Python до версии В3.6.6. Для этого откройте Анаконда Строке и ударил
conda search python
Это даст вам список доступных версий python в Anaconda. Установите нужный с помощью
conda install python=3.6.3
теперь у меня есть обе установки Python одной и той же версии 3.6.3 Spark не должен соответствовать, и это не произошло, когда я запустил действие на Spark-driver. Исключение ушло. Счастливое кодирование ...
Comments