Как я могу установить 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 не работает.

688   13  

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.sh file, и не нужно устанавливать какие-либо другие переменные, это должно делать то, что вы хотите, предполагая, что пути к соответствующим двоичным файлам python верны (проверьте с помощью which). У меня была аналогичная проблема, и это исправило ее.

Я просто столкнулся с той же проблемой, и это шаги, которые я следую, чтобы обеспечить версию Python. Я хотела PySpark работы с Python 2.7, а не 2.6.

  1. перейдите в папку, где $SPARK_HOME указывает на (в моем случае это /home/cloudera/spark-2.1.0-bin-hadoop2.7/)

  2. в папке conf есть файл под названием spark-env.sh. в случае, если у вас есть файл под названием spark-env.sh.template вам нужно будет скопировать файл в новый файл spark-env.sh.

  3. отредактируйте файл и напишите следующие три строки

    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"

  4. сохраните его и снова запустите приложение:)

таким образом, если вы загрузите новую автономную версию 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 ..

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

  1. изменить PYTHON_SPARK и PYTHON_DRIVER_SPARK значение spark-env.sh не работает для меня.
  2. измените значение внутри скрипта python с помощью os.environ["PYSPARK_PYTHON"]="/usr/bin/python3.5" os.environ["PYSPARK_DRIVER_PYTHON"]="/usr/bin/python3.5" не работает для меня.
  3. изменить значение в ~/.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_PYTHON in $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

    Ничего не найдено.