Python в работнике имеет другую версию - проблема Jupyter Notebook, но работает с IPython - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь запустить следующий pyspark код в Jupyter-Notebook на искровом кластере.

import pyspark
from pyspark.sql import SparkSession
from pyspark import SparkContext
spark = SparkSession \
   .builder \
   .master("spark://<master_ip>:7088")\
   .appName("abc") \
   .config("spark.some.config.option", "some-value") \
   .getOrCreate()

print('Spark Session Created')
sc = SparkContext.getOrCreate()
df_1 = sc.range(0, 10)
df_2 = sc.range(11, 20)
df_1 = df_1.union(df_2)
df_1.count()

Ошибка:

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.

Пройдя несколько вопросов о стеке потока, например , этот . Я настроил следующие переменные среды на машине (в пределах $SPARK_HOME/conf/spark-env.sh и .bashrc), но все еще получаю ту же ошибку.

PYSPARK_PYTHON=/home/impadmin/anaconda3/bin/python3.7
PYSPARK_DRIVER_PYTHON=/home/impadmin/anaconda3/bin/python3.7

Теперь все становится интересным, когда я запускаю код в Я Python из терминала:

spark@Ubuntu-user2:~$ ipython
Python 3.7.3 (default, Mar 27 2019, 22:11:17)
Type 'copyright', 'credits' or 'license' for more informationIPython 7.6.1 -- An enhanced Interactive Python. Type '?' for help.

In [1]: import pyspark
   ...: from pyspark.sql import SparkSession   ...: from pyspark import SparkContext   ...: spark = SparkSession \
   ...:    .builder \   ...:    .master("spark://<master_ip>:7088")\   ...:    .appName("abc") \
   ...:    .config("spark.some.config.option", "some-value") \
   ...:    .getOrCreate()
   ...:
   ...: print('Spark Session Created')
   ...: sc = SparkContext.getOrCreate()
   ...: df_1 = sc.range(0, 10)
   ...: df_2 = sc.range(11, 20)
   ...: df_1 = df_1.union(df_2)
   ...: df_1.count()
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
[ WARN] Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Spark Session Created
Out[1]: 19

Так все заработало! Но почему не в Юпитере? Мне нужно немного визуализировать и создать блокнот, но это невозможно только с I Python. Версия Spark: 2.2.1 Версия PySpark: 2.2.1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...