Как настроить PySpark для ноутбука Jupyter

Апач Спарк — одна из самых популярных сред в науке о данных. Он реализует потенциал объединения больших данных и машинного обучения. Это потому что:

  • Spark работает быстро (до 100 раз быстрее, чем традиционные Hadoop MapReduce) из-за операции в памяти.
  • Он предлагает надежные, распределенные, отказоустойчивые объекты данных (называемые СДР)
  • Он прекрасно интегрируется с миром машинного обучения и графической аналитики с помощью дополнительных пакетов, таких как MLlib а также ГрафикX.

Искра реализована на Хадуп/HDFS и написано в основном на Скалафункциональный язык программирования, работающий на JVM.

Тем не менее, для большинства новичков Scala не лучший первый язык для изучения при погружении в мир науки о данных.

К счастью, Spark предоставляет замечательный Python API под названием PySpark. Это позволяет программистам Python взаимодействовать с инфраструктурой Spark, позволяя вам манипулировать данными в масштабе и работать с объектами в распределенной файловой системе.

Зачем использовать Jupyter Notebook?

Теперь обещание платформы больших данных, такой как Spark, по-настоящему реализуется только тогда, когда она работает в кластере с большим количеством узлов.

К сожалению, чтобы научиться и практиковать это, вы должны потратить деньги. Некоторые быстрые варианты:

Вышеупомянутые варианты стоят денег даже для того, чтобы начать обучение (Amazon EMR не включен в годовую программу уровня бесплатного пользования, в отличие от инстансов EC2 или S3).

Однако, если вы хорошо разбираетесь в задачах Python/Jupyter и машинного обучения, имеет смысл начать с развертывания одного кластера на локальном компьютере. Вы также можете запустить его на Amazon EC2, если вам нужно больше места для хранения и памяти.

Помните, Spark — это не новый язык программирования, который вам нужно выучить.

Вместо этого это фреймворк, работающий поверх HDFS. В нем представлены новые концепции, такие как узлы, ленивые вычисления и парадигма программирования «преобразование-действие» (или «отображение и уменьшение»).

На самом деле Spark достаточно универсален, чтобы работать с другими файловыми системами, кроме Hadoop, например с Amazon S3 или Databricks (DBFS).

Но идея всегда одна и та же. Вы распространяете (и реплицируете) свой большой набор данных небольшими фиксированными фрагментами по множеству узлов. Затем вы приближаете вычислительный движок к ним, чтобы вся операция была распараллелена, отказоустойчива и масштабируема.

Работая с блокнотом PySpark и Jupyter, вы можете изучить все эти концепции, ничего не тратя. Вы также можете легко взаимодействовать со SparkSQL и MLlib для управления базой данных и машинного обучения.

Будет намного проще начать работать с реальными большими кластерами, если вы заранее усвоите эти концепции!

Однако, в отличие от большинства библиотек Python, начать с PySpark не так просто, как pip install ... а также import ....

Большинство пользователей с опытом работы с Python считают этот рабочий процесс само собой разумеющимся для всех популярных пакетов Python. Тем не менее, комбинация PySpark + Jupyter нуждается в большей любви.

В этом кратком руководстве мы шаг за шагом рассмотрим, как настроить PySpark и все его зависимости в вашей системе, а затем как интегрировать его с блокнотом Jupyter.

В руководстве предполагается, что вы используете ОС Linux. Это просто потому, что в реальной жизни вы почти всегда будете запускать и использовать Spark в кластере, используя какой-либо облачный сервис, такой как AWS или Azure. Эти узлы кластера, скорее всего, будут работать под управлением Linux.

Рекомендуется освоиться с процессом установки на основе Linux CLI для запуска и изучения Spark. Это отличное руководство по настройке дистрибутива Ubuntu на компьютере с Windows.с помощью Oracle Virtual Box.

Процесс установки и настройки

Убедитесь, что у вас установлен Python 3.4+, потому что это требование последней версии PySpark. Если в вашей системе Linux по умолчанию установлен только Python 2.7, перед продолжением установите Python 3.

python3 --version

После этого установите инструмент pip3:

sudo apt install python3-pip

Установите Jupyter для Python 3:

pip3 install jupyter

Увеличьте переменную PATH, чтобы легко запускать блокнот Jupyter из любого места:

export PATH=$PATH:~/.local/bin

Далее следует важный шаг выбора версии Java.

Существует больше вариантов Java, чем в современном американском магазине есть бренды хлопьев. Показано, что Java 8 работает с UBUNTU 18.04 LTS/SPARK-2.3.1-BIN-HADOOP2.7. Итак, мы пойдем с этим:

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get install oracle-java8-installer
sudo apt-get install oracle-java8-set-default

Проверьте установку:

java -version

Установите некоторые переменные PATH, связанные с Java:

export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export JRE_HOME=/usr/lib/jvm/java-8-oracle/jre

Далее вам нужно установить Scala:

sudo apt-get install scala

Проверьте установку:

scala -version

Затем установите py4j для интеграции Python-Java:

pip3 install py4j

Теперь об Apache Spark. Перейти по этой ссылке и выберите последнюю версию (по умолчанию) для загрузки. Я использую Spark 2.3.1 с Hadoop 2.7. После загрузки распакуйте его из любого места, откуда вы хотите использовать Spark.

sudo tar -zxvf spark-2.3.1-bin-hadoop2.7.tgz

Теперь длинный набор команд для добавления в сценарий оболочки .bashrc. Они установят переменные среды для запуска PySpark с Python 3 и позволят вызывать его из блокнота Jupyter. Перед этим сделайте резервную копию .bashrc.

Откройте .bashrc с помощью любого редактора, например, gedit .bashrc. В конце добавьте следующие строки:

export SPARK_HOME='/{YOUR_SPARK_DIRECTORY}/spark-2.3.1-bin-hadoop2.7'
export PYTHONPATH=$SPARK_HOME/python:$PYTHONPATH
export PYSPARK_DRIVER_PYTHON="jupyter"
export PYSPARK_DRIVER_PYTHON_OPTS="notebook"
export PYSPARK_PYTHON=python3
export PATH=$SPARK_HOME:$PATH:~/.local/bin:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

Не забудьте заменить {YOUR_SPARK_DIRECTORY} фактическим адресом каталога, в который вы распаковали Spark на шаге выше.

Вы можете проверить настройки Spark, перейдя на страницу /bin каталог внутри {ВАШ_СПАРК_КАТАЛОГ} и запустить spark-shell --version команда. Здесь вы можете увидеть, какая у вас версия Spark и какие версии Java и Scala она использует.

Вот и все! После этого вы сможете запустить блокнот Jupyter и начать использовать PySpark из любого места.

Например, если я создал каталог ~/Spark/PySpark_work и работать оттуда, я могу запустить Jupyter:

Но подождите… где я на самом деле назвал что-то вроде pip install pyspark?

Я этого не сделал. PySpark на самом деле поставляется в комплекте с пакетом загрузки Spark и с правильной настройкой переменных среды и привязок. Итак, теперь вы готовы идти.

Далее по этой теме

В настоящее время я работаю над подробным вводным руководством по PySpark DataFrameоперации. Если у вас есть какие-либо вопросы или идеи, которыми вы можете поделиться, свяжитесь со мной по адресу tirthajyoti.[AT]gmail.com.

Кроме того, вы можете проверить мой Репозитории GitHub для других проектов машинного обучения/науки о данных в Python, R или MATLAB.

Если вы, как и я, увлечены машинным обучением и наукой о данных, пожалуйста, не стесняйтесь добавь меня в LinkedIn или же Подпишись на меня в Твиттере.

Похожие записи

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *