Я настраиваю кластер Spark, используя YARN с Jupyterhub, работающим на главном узле.Я установил python 2 и 3 на всех узлах, использующих conda, и я хочу, чтобы пользователи могли указать, с какой версией Python они выполняют код.Это необходимо, поскольку некоторые библиотеки, используемые в пользовательских функциях Python, еще не поддерживают Python 3.
Я создал файл конфигурации ядра
{
"argv": [
"python",
"-m",
"ipykernel_launcher",
"-f",
"{connection_file}"
],
"display_name": "Python 3",
"language": "python",
"env": {
"PYSPARK_PYTHON": "python3",
"PYSPARK_DRIVER_PYTHON": "/opt/anaconda/envs/py3/bin/python"
}
}
, чтобы указать на правильный исполняемый файл Python, и создалсеанс, использующий
spark = pyspark.sql.SparkSession \
.builder \
.appName("MyApp") \
.config("spark.pyspark.python", "/opt/anaconda/envs/py3/bin/python")\
.config("spark.executorEnv.PYTHONPATH", "/opt/anaconda/envs/py3/bin/python")\
.getOrCreate()
, который также устанавливает исполняемый файл python двумя различными способами.При просмотре вкладки «Окружение» пользовательского интерфейса Spark эти значения установлены правильно.
Однако, когда я запускаю любой искровой запрос (например, пример вычисления pi), я получаю Exception: Python in worker has different version 2.7 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.
Как можноЯ указываю исполняемый файл Python из Блокнота Jupyter?