Python in worker имеет другую версию: переменные окружения установлены правильно - PullRequest
1 голос
/ 25 октября 2019

Я запускаю скрипт 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

1 Ответ

1 голос
/ 25 октября 2019

Проблема скорее всего в конфликтующих версиях python. Установите PYSPARK_PYTHON и PYSPARK_DRIVER_PYTHON на /usr/bin/python. В качестве альтернативы вы можете использовать venv

cd ~
python3 -m venv spark_test
cd spark_test
source ./bin/activate
pip3 install jupyterlab pyspark graphframes
jupyter notebook

Вы должны поместить файл jupyter в вашу вновь созданную папку.

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