Estou usando o spark 1.4.0-rc2, então posso usar o python 3 com o spark. Se eu adicionar export PYSPARK_PYTHON=python3
ao meu arquivo .bashrc, poderei executar o spark interativamente com o python 3. No entanto, se eu quiser executar um programa autônomo no modo local, recebo um erro:
Exception: Python in worker has different version 3.4 than that in driver 2.7, PySpark cannot run with different minor versions
Como posso especificar a versão do python para o driver? A configuração export PYSPARK_DRIVER_PYTHON=python3
não funcionou.
fonte
.bashrc
.Definir
PYSPARK_PYTHON=python3
ePYSPARK_DRIVER_PYTHON=python3
ambos para python3 funciona para mim. Fiz isso usando export no meu .bashrc. No final, estas são as variáveis que crio: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"
Eu também segui este tutorial para fazê-lo funcionar a partir do notebook Ipython3: http://ramhiser.com/2015/02/01/configuring-ipython-notebook-support-for-pyspark/
fonte
PYSPARK_PYTHON=python3
define a versão Python dos trabalhadores, certo?PYSPARK_PYTHON=python3; PYSPARK_DRIVER_PYTHON=ipython3
a Executar> Editar configurações> {your_run_config}> Variáveis de ambiente. Para torná-los o padrão para todas as configurações de execução, atualize as variáveis de ambiente para os modelos desejados em Executar> Editar configurações> ModelosAjudou no meu caso:
import os os.environ["SPARK_HOME"] = "/usr/local/Cellar/apache-spark/1.5.1/" os.environ["PYSPARK_PYTHON"]="/usr/local/bin/python3"
fonte
Você pode especificar a versão do Python para o driver, definindo as variáveis de ambiente apropriadas no
./conf/spark-env.sh
arquivo. Se ainda não existir, você pode usar ospark-env.sh.template
arquivo fornecido, que também inclui muitas outras variáveis.Aqui está um exemplo simples de um
spark-env.sh
arquivo para definir as variáveis de ambiente Python relevantes:#!/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
Neste caso, ele define a versão do Python usada pelos trabalhadores / executores para Python3 e a versão do driver do Python para iPython para um shell mais agradável para trabalhar.
Se você ainda não tem um
spark-env.sh
arquivo e não precisa definir nenhuma outra variável, este deve fazer o que você quiser, assumindo que os caminhos para os binários Python relevantes estão corretos (verifique comwhich
). Eu tive um problema semelhante e isso resolveu.fonte
Se você estiver executando o Spark em uma organização maior e não conseguir atualizar o arquivo /spark-env.sh, exportar as variáveis de ambiente pode não funcionar.
Você pode adicionar as configurações específicas do Spark por meio da
--conf
opção ao enviar a tarefa em tempo de execução.pyspark --master yarn --[other settings]\ --conf "spark.pyspark.python=/your/python/loc/bin/python"\ --conf "spark.pyspark.driver.python=/your/python/loc/bin/python"
fonte
Acabei de enfrentar o mesmo problema e essas são as etapas que sigo para fornecer a versão Python. Eu queria executar meus trabalhos do PySpark com Python 2.7 em vez de 2.6.
Vá para a pasta para onde
$SPARK_HOME
está apontando (no meu caso é/home/cloudera/spark-2.1.0-bin-hadoop2.7/
)Na pasta
conf
, há um arquivo chamadospark-env.sh
. No caso de você ter um arquivo chamado,spark-env.sh.template
você precisará copiar o arquivo para um novo arquivo chamadospark-env.sh
.Edite o arquivo e escreva as próximas três linhas
Salve-o e inicie seu aplicativo novamente :)
Dessa forma, se você baixar uma nova versão autônoma do Spark, poderá definir a versão do Python para a qual deseja executar o PySpark.
fonte
cp
o arquivospark-env.sh.template
como um novospark-env.sh
e, em seguida, alterar o novo arquivo em vez de alterar o nome e o conteúdo do modelo. O modelo deve permanecer como uma referência.Encontrei a mesma mensagem de erro e tentei três maneiras mencionadas acima. Listei os resultados como uma referência complementar a outros.
PYTHON_SPARK
ePYTHON_DRIVER_SPARK
emspark-env.sh
não funciona para mim.os.environ["PYSPARK_PYTHON"]="/usr/bin/python3.5"
os.environ["PYSPARK_DRIVER_PYTHON"]="/usr/bin/python3.5"
não funciona para mim.~/.bashrc
funciona como um encanto ~fonte
Eu estava executando em IPython (conforme descrito neste link por Jacek Wasilewski ) e estava recebendo essa exceção; Adicionado
PYSPARK_PYTHON
ao arquivo de kernel IPython e usado o notebook jupyter para executar, e começou a trabalhar.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" }
fonte
Eu tenho o mesmo problema em faísca autônoma em janelas . Minha versão de correção é assim: eu tinha minhas configurações de variáveis de ambiente como abaixo
PYSPARK_SUBMIT_ARGS="pyspark-shell" PYSPARK_DRIVER_PYTHON=jupyter PYSPARK_DRIVER_PYTHON_OPTS='notebook' pyspark
Com essa configuração, executei uma ação no pyspark e obtive a seguinte exceção:
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.
Para verificar com qual versão do Python meu spark-worker está usando, acesse o seguinte no prompt do cmd .
python --version Python 3.6.3
que me mostrou o Python 3.6.3 . Então, claramente, meu spark-worker está usando sistema python que é v3.6.3.
Agora, enquanto eu defino meu driver spark para executar o jupyter configurando
PYSPARK_DRIVER_PYTHON=jupyter
então, preciso verificar a versão do python que o jupyter está usando.Para fazer isso, abra o prompt do Anaconda e clique
python --version Python 3.5.X :: Anaconda, Inc.
Aqui tem o python jupyter está usando a v3.5.x . Você pode verificar esta versão também em qualquer Notebook (Ajuda-> Sobre).
Agora preciso atualizar o jupyter python para a versão v3.6.6 . Para fazer isso, abra o prompt do Anaconda e clique
Isso lhe dará uma lista de versões de python disponíveis no Anaconda. Instale o seu desejado com
Agora eu tenho ambas as instalações do Python da mesma versão 3.6.3. O Spark não deveria estar em conformidade e não estava quando executei uma Ação no driver do Spark. A exceção acabou. Boa codificação ...
fonte
Caso você deseje apenas alterar a versão do python para a tarefa atual, você pode usar o seguinte comando pyspark start:
fonte
Por favor, olhe o snippet abaixo:
#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
fonte
Estou usando o seguinte ambiente
? python --version; ipython --version; jupyter --version Python 3.5.2+ 5.3.0 5.0.0
e os seguintes aliases funcionam bem para mim
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"
No notebook, eu configurei o ambiente da seguinte maneira
from pyspark.context import SparkContext sc = SparkContext.getOrCreate()
fonte
Erro
Correção (para ambiente Cloudera)
Edite este arquivo:
/opt/cloudera/parcels/cdh5.5.4.p0.9/lib/spark/conf/spark-env.sh
Adicione estas linhas:
fonte
Encontrei isso hoje no trabalho. Um administrador achou prudente codificar o Python 2.7 como o
PYSPARK_PYTHON
ePYSPARK_DRIVER_PYTHON
em$SPARK_HOME/conf/spark-env.sh
. Desnecessário dizer que isso quebrou todos os nossos trabalhos que utilizam qualquer outra versão ou ambiente python (que é> 90% dos nossos trabalhos). @PhillipStich aponta corretamente que você nem sempre tem permissão de gravação para este arquivo, como é o nosso caso. Embora definir a configuração naspark-submit
chamada seja uma opção, outra alternativa (ao executar no modo yarn / cluster) é definir aSPARK_CONF_DIR
variável de ambiente para apontar para outro script de configuração. Lá você pode definir seu PYSPARK_PYTHON e quaisquer outras opções de que possa precisar. Um modelo pode ser encontrado no código-fonte spark-env.sh no github .fonte
No meu caso (Ubuntu 18.04), executei este código no terminal:
e editado da
SPARK_HOME
seguinte forma:export SPARK_HOME=/home/muser/programs/anaconda2019/lib/python3.7/site-packages/pyspark export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
Ao fazer isso,
SPARK_HOME
vou me referir aopyspark
pacote que instalei nosite-package
.Para saber como usar
vim
, acesse este link.fonte
Corre:
A primeira linha neste exemplo mostra o link simbólico python3. Para defini-lo como o link simbólico padrão do Python, execute o seguinte:
em seguida, recarregue seu shell.
fonte
Tive o mesmo problema, só esqueci de ativar meu ambiente virtual. Para qualquer um que também tenha um branco mental.
fonte
Se você estiver trabalhando no mac, use os seguintes comandos
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
Se você estiver usando outro sistema operacional, verifique o seguinte link: https://github.com/GalvanizeDataScience/spark-install
fonte