트러블슈팅
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
- 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
- 설정하고 나면 버전이 제대로 잡히는 것을 볼 수 있음