Как настроить 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 или же Подпишись на меня в Твиттере.