본문 바로가기

MLOps/트러블 슈팅

[트러블 슈팅] RuntimeError: Python in worker has different version 3.9 than that in driver 3.7, PySpark cannot run with different minor versions. Please check environment variables PYSPARK_PYTHON and PYSPARK_DRIVER_PYTHON are correctly set.

트러블슈팅

RuntimeError: Python in worker has different version 3.9 than that in driver 3.7, PySpark cannot run with different minor versions. Please check environment variables PYSPARK_PYTHON and PYSPARK_DRIVER_PYTHON are correctly set.

 

개요

파이스파크(3.9)를 실행하자, 파이썬(3.7)이랑 파이스파크 버전이 다르다는 오류 메시지가 나왔다.

 

방법(2가지)

  1. 파이스파크가 사용하는 파이썬 버전을 현재 파이썬 버전으로 변경
  2. 현재 파이썬 버전을 파이스파크 버전으로 변경

방법 1

  • spark-env.sh 파일에 아래 2줄 추가
export PYSPARK_PYTHON=/usr/local/bin/python3.7
export PYSPARK_DRIVER_PYTHON=/usr/local/bin/python3.7


방법 2

  • 만약에 아래와 같이 파이스파크 버전을 3.9로 잡았고
export PYSPARK_PYTHON=/usr/local/bin/python3.9
  • 사용 중인 파이썬 버전이 3.7이라면 버전을 변경 할 필요가 있다.
airflow@fea6cbc10f31:~/spark/conf$ python3 --version
Python 3.7.16

(파이썬 3.9가 설치되어있다는 가정)

  • 현재 파이썬 위치 확인
# 파이썬 위치 확인
$ which python
/usr/local/bin/python
  • 파이썬 3.9 버전을 /usr/bin/python3.9에 설치했음. 
# 현재 /usr/bin/python3.9 가 존재하는 상황
# /usr/local/bin/python의 심볼릭 링크를 /usr/bin/python3.9로 잡고 우선순위 0번 부여
# $ sudo update-alternatives --install <link> <name> <path> <priority>
sudo update-alternatives --install /usr/local/bin/python python /usr/bin/python3.9 0
  • 명령어를 실행했다고 3.9버전이 실행되는 건 아니라서, 아래 명령어 입력해서 1번을 입력함
sudo update-alternatives --config python

  • 설정하고 나면 버전이 제대로 잡히는 것을 볼 수 있음