Какие механизмы сборки приложений поддерживает Spark

hadoop spark, анализ с использование spark, bigdata курсы,аналитика больших данных курсы, курсы spark, основы spark, основы hadoop, обучение администраторов spark, курсы hadoop sql, big data обучение, bigdata курсы

В прошлый раз мы говорили о том, как работают пользовательские функции в Spark. Сегодня поговорим про сборку Spark-приложений, а также рассмотрим, какие механизмы для сборки приложений поддерживает фреймворк Apache Spark. Читайте далее про особенности и применение механизмов для сборки распределенных Spark-приложений.

 

Сборка приложений в Apache Spark: 2 самых известных инструмента для сборки распределенных приложений

Сборка приложения (application build) — это процесс получения готового программного продукта путем его компиляции (преобразование текста языка программирования в набор машинных кодов) и компоновки (получение исполняемого файла программы, чаще всего с расширением .exe). Сборщик приложений — это программное обеспечение (библиотека или фреймворк), которое служит для автоматизации (без вмешательства пользователя) процесса сборки программного продукта. В этой статье мы рассмотрим 2 самых известных сборщика приложений, которые поддерживает Spark. К ним относятся следующие:

  • SBT (Scala Build Tool);
  • Maven

Каждый из этих инструментов мы подробнее рассмотрим далее.

SBT

SBT (Scala Build Tool) — это инструмент для сборки приложений, написанных на языке Scala. Параметры SBT-сборки задаются в специальном файле build.sbt, который лежит в корневом каталоге проекта (в папке с названием проекта). Для SBT-сборки используется специальный предметный язык (Domain Specific Language, DSL), который использует операции присваивания значений различным параметрам сборки (например, версия SBT-сборщика, имя проекта или версия интерпретатора Scala) для корректной сборки приложения. Следующий код на DSL-языке SBT-сборщика отвечает за определение базовых параметров сборки распределенного Spark-приложения:

import AssemblyKeys_ // библиотека для создания скомпилированного файла
name : = "SparkProject" // имя проекта
version : = "1.0" // версия проекта
scalaVersion ·= "2.10.3"// версия Scala-интерпретатора

Для подключения зависимостей (для подгрузки необходимых библиотек, использующихся в проекте) используется параметр libraryDependencies и специальный класс Seq. Следующий код на DSL-языке SBT-сборщика отвечает за определение зависимостей проекта на базе Spark [1]:

libraryDependencies ++= Seq(
// Подгрузка Spark
"org.apache.spark" % "spark-core_2.10" % "1.2.0" %"provided",
// Подгрузка сторонних библиотек
"net.sf.jopt-simple" % "jopt-simple" %"4.3",
"joda-time" % "joda-time" % "2.0"
"org.apache.spark" % "spark-sql" % "2.4.0" % "provided",
"org.apache.spark" % "spark-mllib" % "2.4.0" % "provided")

При сборке Spark-проекта пользователь может сам определять, какие версии библиотек (в том числе и версию фреймворка Spark) нужно подгрузить. Для этого необходимо между знаками «%» в кавычках указать номер версии.

Maven

Maven — это инструмент (фреймворк) для автоматизации сборки приложений на основе описания их структуры в специальных POM-файлах (Project Object Model). POM-файл представляет собой структурированную (упорядоченную) последовательность параметров сборки проекта (например, версия проекта и зависимости) на языке разметки XML (Extensible Markup Language) [2]. Следующий код на языке XML отвечает за определение информации о проекте [3]:

 

<!-- Имя проекта -->
<name>Simple Project</name>
<!-- Упаковщик -->
<packaging>jar</packaging>
<!-- Начальная версия проекта -->
<version>l.0</version>

Для сборки Spark-приложения на Maven также необходимо указать зависимости для подгрузки библиотек из необходимых репозиториев. Зависимости указываются в блоке <dependencies> </dependencies>. Каждая отдельная зависимость выносится в отдельный подблок <dependency> </ dependency>.  Следующий код на языке XML отвечает за определение зависимостей для подгрузки библиотек, использующихся в приложении на базе фреймворка Spark [3]:

 

<dependencies>
<!-- Зависимость Spark -->
<dependency>
<groupid>org.apache.spark</groupid>
<artifactid>spark-core_2.10</artifactid>
<version>l.2.0</version>
<scope>provided</scope>
</dependency>
<!-- Сторонняя библиотека -->
<dependency>
<groupid>net.sf.jopt-simple</groupid>
<artifactid>jopt-simple</artifactid>
<version>4.3</version>
</dependency>
<!-- Сторонняя библиотека -->
<dependency>
<groupid>joda-time</groupid>
<artifactid>joda-time</artifactid>
<version>2.0</version>
</dependency>
</dependencies>

Maven используется в основном для проектов, написанных на таких языках, как:

  • Java;
  • C#;
  • Scala

Для сборки Spark-приложений на языке Python можно использовать сценарий spark-submit, который мы рассматривали в статье про развертывание распределенных Spark-приложений здесь.

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

Больше подробностей про применение Apache Spark в проектах анализа больших данных, разработки Big Data приложений и прочих прикладных областях Data Science вы узнаете на практических курсах по Spark в нашем лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов в Москве:

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

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

Источники

  1. https://mungingdata.com/apache-spark/introduction-to-sbt/
  2. https://ru.wikipedia.org/wiki/Apache_Maven
  3. К.Харау, Э.Ковински, П.Венделл, М.Захария. Изучаем Spark: молниеносный анализ данных

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

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