ошибки несогласованных версий Python для рабочих и драйверов на кластерах блоков данных - PullRequest
0 голосов
/ 27 октября 2019

Я использую код Python3 на кластерах блоков данных из Eclipse на MacBook.

Когда я запускаю:

 spark = SparkSession.builder \
 .master("local") \
 .appName("Word Count") \
 .config("spark.some.config.option", "some-value") \
 .getOrCreate()

 spark.createDataFrame(df_data) # df_data is a pandas dataframe, 

Я получил ошибку:

 Exception: 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.

В моем затмении:

PYSPARK_PYTHON = pytohn3
PYSPARK_PYTHON = /Users/a_name/.pyenv/versions/3.6.0/bin/python

Итак, я хотел быпроверить Python версии драйвера и работника кластера данных из записной книжки.

import sys
print(sys.version)

Я получил:

3.6.5 |Anaconda, Inc.| [GCC 7.2.0]

import subprocess
python_version = subprocess.check_output(['python', '--version'], stderr=subprocess.STDOUT)
print(python_version)

Я получил:

b'Python 2.7.15 :: Anaconda, Inc.\n'

Я не знаю, почему здесь есть две версии Python? Я должен изменить версию Python моего кода Python в Eclipse?

1 Ответ

0 голосов
/ 31 октября 2019

Это нормально для двух версий Python, потому что два кода для проверки версии Python вызывают разные Python вашей среды, как показано ниже.

  1. Версия Python, возвращаемая из sys.version код поступает от вашего текущего работающего интерпретатора Python.

  2. Но версия Python, возвращенная из кода subprocess.check_output(['python', '--version'], stderr=subprocess.STDOUT), взята из версии Python по умолчанию вашей текущей сессии ОС.

Так что они обычно отличаются, пожалуйста, смотрите описание sys.version и subprocess.check_output Python 3.6.

И какпроблема Exception: 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. говорит о том, что вашему текущему драйверу PySpark требуется среда выполнения Python 3.5, поэтому попробуйте установить другую среду выполнения Python 3.5 в своей среде, и вы можете исправить это с помощью приведенного ниже кода без настройки только переменной PYSPARK_PYTHON.

# Ofcourse, I know you are working on MacOS, the value for Linux is just a sample.
import os
os.environ["PYSPARK_PYTHON"]="<the path of Python 3.5 runtime, such as /usr/bin/python3.5 on Linux>"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...