Я использую spark 1.4.0-rc2, поэтому могу использовать python 3 с искрой. Если я добавлю 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
не сработала.
источник
.bashrc
.У меня работает установка
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/
источник
PYSPARK_PYTHON=python3
устанавливает версию Python для рабочих, верно?PYSPARK_PYTHON=python3; PYSPARK_DRIVER_PYTHON=ipython3
в «Выполнить»> «Изменить конфигурации»> {your_run_config}> «Переменные среды». Чтобы сделать их значениями по умолчанию для всех конфигураций запуска, обновите переменные среды для желаемых шаблонов в разделе «Выполнить»> «Изменить конфигурации»> «Шаблоны»В моем случае помогли:
import os os.environ["SPARK_HOME"] = "/usr/local/Cellar/apache-spark/1.5.1/" os.environ["PYSPARK_PYTHON"]="/usr/local/bin/python3"
источник
Вы можете указать версию Python для драйвера, установив соответствующие переменные среды в
./conf/spark-env.sh
файле. Если он еще не существует, вы можете использовать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
файла и вам не нужно устанавливать какие-либо другие переменные, он должен делать то, что вы хотите, при условии, что пути к соответствующим двоичным файлам Python верны (проверьте с помощьюwhich
). У меня была аналогичная проблема, и это исправило ее.источник
Если вы используете Spark в более крупной организации и не можете обновить файл /spark-env.sh, экспорт переменных среды может не работать.
Вы можете добавить определенные параметры Spark с помощью
--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. Я хотел запускать свои задания 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
.Отредактируйте файл и напишите следующие три строки
Сохраните его и снова запустите приложение :)
Таким образом, если вы загружаете новую автономную версию Spark, вы можете установить версию Python, для которой хотите запустить PySpark.
источник
cp
файлspark-env.sh.template
как новый,spark-env.sh
а затем изменить новый файл, а не изменять имя и содержимое шаблона. Шаблон должен оставаться справочным.Я столкнулся с тем же сообщением об ошибке и попробовал три способа, упомянутых выше. Я перечислил результаты как дополнительную ссылку на другие.
PYTHON_SPARK
иPYTHON_DRIVER_SPARK
значение вspark-env.sh
не работает для меня.os.environ["PYSPARK_PYTHON"]="/usr/bin/python3.5"
os.environ["PYSPARK_DRIVER_PYTHON"]="/usr/bin/python3.5"
не работает для меня.~/.bashrc
работает как шарм ~источник
Я запускал его в IPython (как описано в этой ссылке Яцеком Василевски ) и получал это исключение; Добавлен
PYSPARK_PYTHON
в файл ядра IPython, использовал jupyter notebook для запуска и начал работать.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" }
источник
У меня такая же проблема с автономной искрой в окнах . Моя версия исправления такова: у меня были переменные среды, указанные ниже
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 использует мой искровой рабочий, нажмите в командной строке следующее.
python --version Python 3.6.3
который показал мне Python 3.6.3 . Итак, очевидно, что мой искровый рабочий использует системный питон v3.6.3.
Теперь, когда я установил свой искровый драйвер для запуска jupyter,
PYSPARK_DRIVER_PYTHON=jupyter
мне нужно проверить версию Python, которую использует jupyter.Для этого откройте Anaconda Prompt и нажмите
python --version Python 3.5.X :: Anaconda, Inc.
Здесь получил jupyter Питон с помощью v3.5.x . Вы также можете проверить эту версию в любом Блокноте (Справка-> О программе).
Теперь мне нужно обновить питон jupyter до версии v3.6.6 . Для этого откройте Anaconda Prompt и нажмите
Это даст вам список доступных версий python в Anaconda. Установите желаемый с помощью
Теперь у меня обе установки Python одной и той же версии 3.6.3. Spark не должен соответствовать, и этого не произошло, когда я запустил Action on Spark-driver. Исключения больше нет. Удачного кодирования ...
источник
Если вы хотите изменить версию Python только для текущей задачи, вы можете использовать следующую команду pyspark start:
источник
Пожалуйста, посмотрите на приведенный ниже фрагмент:
#setting environment variable for pyspark in linux||ubuntu #goto --- /usr/local/spark/conf #create a new file named spark-env.sh copy all content of spark-env.sh.template to it #then add below lines to it, with path to python PYSPARK_PYTHON="/usr/bin/python3" PYSPARK_DRIVER_PYTHON="/usr/bin/python3" PYSPARK_DRIVER_PYTHON_OPTS="notebook --no-browser" #i was running python 3.6 ||run - 'which python' in terminal to find the path of 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()
источник
ошибка
Исправить (для среды Cloudera)
Отредактируйте этот файл:
/opt/cloudera/parcels/cdh5.5.4.p0.9/lib/spark/conf/spark-env.sh
Добавьте эти строки:
источник
Наткнулся на это сегодня на работе. Администратор счел благоразумным жестко кодировать Python 2.7 как файлы
PYSPARK_PYTHON
иPYSPARK_DRIVER_PYTHON
in$SPARK_HOME/conf/spark-env.sh
. Излишне говорить, что это нарушило все наши задания, в которых используются любые другие версии или среды Python (что составляет> 90% наших заданий). @PhillipStich правильно указывает, что у вас не всегда могут быть права на запись для этого файла, как в нашем случае. Хотя установка конфигурации вspark-submit
вызове является вариантом, другой альтернативой (при работе в режиме пряжи / кластера) является установкаSPARK_CONF_DIR
переменной среды, указывающей на другой сценарий конфигурации. Здесь вы можете установить PYSPARK_PYTHON и любые другие параметры, которые могут вам понадобиться. Шаблон можно найти в исходном коде spark-env.sh на github .источник
В моем случае (Ubuntu 18.04) я запустил этот код в терминале:
а затем отредактировал
SPARK_HOME
следующим образом:export SPARK_HOME=/home/muser/programs/anaconda2019/lib/python3.7/site-packages/pyspark export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
Таким образом, my
SPARK_HOME
будет ссылаться наpyspark
пакет, который я установил вsite-package
.Чтобы узнать, как пользоваться
vim
, перейдите по этой ссылке.источник
Бегать:
Первая строка в этом примере показывает символическую ссылку python3. Чтобы установить его как символическую ссылку Python по умолчанию, выполните следующее:
затем перезагрузите оболочку.
источник
У меня была такая же проблема, просто забыл активировать виртуальную среду. Для всех, у кого также было пустое мышление.
источник
Если вы работаете на Mac, используйте следующие команды
export SPARK_HOME=`brew info apache-spark | grep /usr | tail -n 1 | cut -f 1 -d " "`/libexec export PYTHONPATH=$SPARK_HOME/python:$PYTHONPATH export HADOOP_HOME=`brew info hadoop | grep /usr | head -n 1 | cut -f 1 -d " "`/libexec export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native/:$LD_LIBRARY_PATH export PYSPARK_PYTHON=python3
Если вы используете другую ОС, проверьте следующую ссылку: https://github.com/GalvanizeDataScience/spark-install
источник