Быстрая установка GraphFrames

Установка той или иной библиотеки может оказаться муторным делом, порой приходится тратить уйму времени на это. С установкой пакета GraphFrames для работы с графами в Apache Spark дела обстоят не просто. Мы надеемся, что после прочтения этой статьи у вас не возникнут никакие затруднения по установке PySpark и GraphFrames с нуля.

Установка Java

В первую очередь стоит установить JDK (или Java SE). Spark будет всегда работать на JDK 8, поэтому рекомендуем установить именно эту версию. На Ubuntu устанавливается Java очень просто:

$ sudo apt install openjdk-8-jdk-headless

Суффикс headless означает, что это пакет без графических библиотек. Для Spark они не требуются. Чтобы убедиться, что Java установлена дайте команду:

$ java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-8u292-b10-0ubuntu1~20.04-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)

Python лучше ставить не выше версии 3.7

Проверьте версию Python, поскольку Spark плохо поддерживают версии младше 3.7. Версия Python 3.6 — наиболее стабильная. Если у вас новые версии, то используйте conda, либо можете установить Python локально в своей домашней директории. Как это сделать, написано в одной из наших статей

Установка PySpark

Если у вас не стоит Apache Spark, то установите его через обычный пакетный менеджер pip. При установке укажите версию Pyspark 2.4. А вот с 3-й версией могут быть проблемы, связанные с поддержкой GraphFrames [1]. Итак, чтобы установить PySpark дайте команду (предварительно создав отдельную виртуальную среду, например, через venv):

$ pip install pyspark==2.4.7

Проверьте работоспособность программы, проверив версию PySpark:

$ pyspark --version

Установка GraphFrames с поддержкой PySpark

GraphFrames берется из репозитория Apache Spark. Скачивать его самостоятельно необязательно, но репозиторий указать нужно, потому что по умолчанию он скачивается из неподдерживаемых мест. Подгружать его необходимо через аргумент --packages, если он не установлен локально, то он скачается сам. Нужно указать правильную версию Spark и Scala, установленные на компьютере, иначе Spark будет выбрасывать исключение java.lang.NoSuchMethodError. Итак, версии этих программ определяются так:

graphframes:0.8.1-spark<ВЕРСИЯ SPARK>-s_<ВЕРСИЯ SCALA>

Здесь 0.8.1 является версией самого GraphFrames (самая новая на момент написания статьи). Выше мы написали, как определить версию Spark. Для того чтобы узнать версию Scala, дайте команду:

$ spark-shell --version
Using Scala version 2.11.12

В результате наша конфигурация определяется как:

graphframes:0.8.1-spark2.4-s_2.11

Как уже было сказано, аргументом --packages указываете библиотеку GraphFrames. Apache Spark скачает jar-файл и добавит его в директорию ~/.ivy2/jars, и к нему он будет обращаться. Итак, запустим и протестируем:

$ pyspark  \
    --packages graphframes:graphframes:0.8.1-spark2.4-s_2.11 \
    --repositories https://repos.spark-packages.org

Если не вылезло никаких исключений, то скопируйте Python-код ниже. Если и он запустился без ошибок, значит вы всё сделали правильно. Ошибки могут появиться из-за неправильно установленного JDK или неправильно набранных версий программ.

from graphframes import GraphFrame

v = sqlContext.createDataFrame([
  ("a", "Alice", 34),
  ("b", "Bob", 36),
  ("c", "Charlie", 30),
], ["id", "name", "age"])

e = sqlContext.createDataFrame([
  ("a", "b", "friend"),
  ("b", "c", "follow"),
  ("c", "b", "follow"),
], ["src", "dst", "relationship"])

g = GraphFrame(v, e)
g.inDegrees.show()

Запуск GraphFrames из Jupyter Notebook

Многие Data Scintist’ы предпочитают работать в Jupyter Notebook, так как он очень удобен. Чтобы иметь возможность заупскать PySpark из Jupyter Notebook, экспортируйте следующие две переменные окружения:

$ export PYSPARK_DRIVER_PYTHON=jupyter
$ export PYSPARK_DRIVER_PYTHON_OPTS=notebook

— а затем запустите PySpark, указав аргумент --packages, должен запуститься привычный веб-сервер:

$ pyspark --packages graphframes:graphframes:0.8.1-spark2.4-s_2.11

Указывать репозиторий уже не нужно, ведь библиотека уже скачана. При желании всегда запускать Jupyter Notebook с поддержкой PySpark добавьте эти переменные в .bash_profile.

 

О том, как работать с графами GraphFrames для решения практических задач Data Science вы узнаете на специализированном курсе Графовые алгоритмы в Apache Spark в лицензированном учебном центре обучения и повышения квалификации разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве.

Записаться на курс

Смотреть раcписание

Источники
  1. https://graphframes.github.io/graphframes/docs/_site/index.html

Добавить комментарий

Поиск по сайту