[apache-spark] Spark에서 드라이버의 Python 버전을 어떻게 설정합니까?

스파크와 함께 파이썬 3을 사용할 수 있도록 스파크 1.4.0-rc2를 사용하고 있습니다. export PYSPARK_PYTHON=python3.bashrc 파일에 추가 하면 python 3과 함께 Spark를 대화 형으로 실행할 수 있습니다. 그러나 로컬 모드에서 독립 실행 형 프로그램을 실행하려면 오류가 발생합니다.

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이 작동하지 않았습니다.



답변

실행중인 독립 실행 형 프로젝트가 Python 3으로 실행되었는지 확인해야합니다. spark-submit을 통해 독립 실행 형 프로그램을 제출하는 경우 제대로 작동하지만 Python으로 실행하는 경우 python3을 사용하여 시작해야합니다. 당신의 앱.

또한 환경 변수를에서 설정했는지 확인하십시오 ./conf/spark-env.sh(존재하지 않는 경우 spark-env.sh.template기본으로 사용할 수 있음 ).


답변

python3에 대한 설정 PYSPARK_PYTHON=python3PYSPARK_DRIVER_PYTHON=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"


답변

./conf/spark-env.sh파일 에서 적절한 환경 변수를 설정하여 드라이버의 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파일 및 기타 변수를 설정할 필요가 없습니다,이는 관련 파이썬 바이너리 경로 (에 확인 올바른지 가정, 당신이 원하는 일을해야한다 which). 비슷한 문제가 있었고 이로 인해 해결되었습니다.


답변

대규모 조직에서 Spark를 실행 중이고 /spark-env.sh 파일을 업데이트 할 수없는 경우 환경 변수 내보내기가 작동하지 않을 수 있습니다.

--conf런타임에 작업을 제출할 때 옵션을 통해 특정 Spark 설정을 추가 할 수 있습니다 .

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 버전을 제공하기 위해 따르는 단계입니다. 2.6 대신 Python 2.7로 PySpark 작업을 실행하고 싶었습니다.

  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

    export PYSPARK_DRIVER_PYTHON = / usr / local / bin / python2.7

    export SPARK_YARN_USER_ENV = “PYSPARK_PYTHON = / usr / local / bin / python2.7”

  4. 저장하고 응용 프로그램을 다시 시작하십시오. 🙂

이런 식으로 새로운 Spark 독립 실행 형 버전을 다운로드하면 PySpark를 실행할 Python 버전을 설정할 수 있습니다.


답변

동일한 오류 메시지가 표시되고 위에서 언급 한 세 가지 방법을 시도했습니다. 나는 그 결과를 다른 사람들에 대한 보완 적 참고 자료로 나열했습니다.

  1. 의 변경 PYTHON_SPARKPYTHON_DRIVER_SPARK값이 spark-env.sh작동하지 않습니다.
  2. os.environ["PYSPARK_PYTHON"]="/usr/bin/python3.5"
    os.environ["PYSPARK_DRIVER_PYTHON"]="/usr/bin/python3.5"나를 위해 작동하지 않는 python 스크립트 내부의 값을 변경하십시오 .
  3. ~/.bashrc작품 의 가치를 매력처럼 바꿔보세요 ~