Я запускаю скрипт Python на ноутбуке Jupyter в Linux Mint.
Код вряд ли важен, но вот он (учебник для графических фреймов):
import pandas
import pyspark
from functools import reduce
from graphframes import *
from IPython.display import display, HTML
from pyspark.context import SparkContext
from pyspark.sql import SQLContext
from pyspark.sql.functions import col, lit, when
from pyspark.sql.session import SparkSession
sc = SparkContext.getOrCreate()
sqlContext = SQLContext.getOrCreate(sc)
spark = SparkSession(sc)
vertices = sqlContext.createDataFrame(
[
("a", "Alice", 34),
("b", "Bob", 36),
("c", "Charlie", 30),
("d", "David", 29),
("e", "Esther", 32),
("f", "Fanny", 36),
("g", "Gabby", 60),
],
["id", "name", "age"],
)
edges = sqlContext.createDataFrame(
[
("a", "b", "friend"),
("b", "c", "follow"),
("c", "b", "follow"),
("f", "c", "follow"),
("e", "f", "follow"),
("e", "d", "friend"),
("d", "a", "friend"),
("a", "e", "friend"),
],
["src", "dst", "relationship"],
)
g = GraphFrame(vertices, edges)
display(g.inDegrees.toPandas())
Последняя строка - это строка, вызывающая проблемы, она выдает следующую ошибку:
Exception: Python in worker has different version 2.7 than that in driver 3.6, PySpark cannot run with different minor versions.Please check environment variables PYSPARK_PYTHON and PYSPARK_DRIVER_PYTHON are correctly set.
Эти две переменные правильно установлены:
printenv PYSPARK_PYTHON
-> /usr/bin/python3
printenv PYSPARK_DRIVER_PYTHON
-> /usr/bin/python3
Я также добавил ихк моему spark-env.sh
файлу так:
# This file is sourced when running various Spark programs.
# Copy it as spark-env.sh and edit that to configure Spark for your site.
export PYSPARK_PYTHON=/usr/bin/python3
export PYSPARK_DRIVER_PYTHON=/usr/bin/python3
Но ошибка сохраняется, где еще мне нужно обновить эти переменные?
Редактирует
python --version
Python 3.7.4
pip3 list | grep jupyter
jupyter 1.0.0
jupyter-client 5.3.4
jupyter-console 6.0.0
jupyter-core 4.6.1
jupyterlab 1.1.4
jupyterlab-server 1.0.6
pip3 list | grep pyspark
pyspark 2.4.4