Установка той или иной библиотеки может оказаться муторным делом, порой приходится тратить уйму времени на это. С установкой пакета 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 в Москве.