Поделиться через


Руководство. Создание приложения Scala Maven для Apache Spark в HDInsight с помощью IntelliJ

Из этого руководства вы узнаете, как создать приложение Apache Spark, написанное в Scala, с помощью Apache Maven с IntelliJ IDEA. В этой статье в качестве системы сборки используется Apache Maven. И начинается с существующего архетипа Maven для Scala, предоставляемого IntelliJ IDEA. Создание приложения Scala в IntelliJ IDEA включает следующие действия.

  • Используйте Maven в качестве системы сборки.
  • Обновите файл объектной модели проекта (POM), чтобы устранить зависимости модуля Spark.
  • Напишите приложение в Scala.
  • Создайте JAR-файл, который можно отправить в кластеры HDInsight Spark.
  • Запустите приложение в кластере Spark с помощью Livy.

В этом руководстве описано, как:

  • Установите плагин Scala для IntelliJ IDEA
  • Разработка приложения Scala Maven с помощью IntelliJ
  • Создание автономного проекта Scala

Предпосылки

Установка плагина Scala для IntelliJ IDEA

Выполните следующие действия, чтобы установить плагин Scala:

  1. Откройте IntelliJ IDEA.

  2. На экране приветствия перейдите к разделу "Настройка>подключаемых модулей" , чтобы открыть окно "Подключаемые модули ".

    Снимок экрана: экран приветствия IntelliJ.

  3. Выберите "Установить " для набора средств Azure для IntelliJ.

    Снимок экрана: Набор инструментов IntelliJ Для Azure.

  4. Выберите Установить для плагина Scala, который представлен в новом окне.

    Снимок экрана, показывающий плагин IntelliJ Scala.

  5. После успешной установки подключаемого модуля необходимо перезапустить интегрированную среду разработки.

Создание приложения с помощью IntelliJ

  1. Запустите IntelliJ IDEA и выберите Create New Project (Создать проект), чтобы открыть окно New Project (Новый проект).

  2. На панели слева выберите Azure Spark/HDInsight.

  3. Выберите проект Spark (Scala) в главном окне.

  4. В раскрывающемся списке средства сборки выберите одно из следующих значений:

    • Maven для поддержки мастера создания проекта Scala.
    • SBT для управления зависимостями и сборки проекта Scala.

    Снимок экрана: создание приложения.

  5. Выберите Далее.

  6. В окне New Project (Новый проект) укажите следующую информацию:

    Недвижимость Описание
    Имя проекта Введите имя.
    Расположение проекта Введите расположение для сохранения проекта.
    Project SDK (Пакет SDK проекта) Это поле будет пустым при первом использовании IDEA. Выберите New... (Создать...) и перейдите к JDK.
    Версия Spark Мастер создания интегрирует правильную версию пакетов SDK для Spark и Scala. Если используется версия кластера Spark более ранняя, чем 2.0, выберите Spark 1.x. В противном случае выберите Spark2.x. В этом примере используется Spark 2.3.0 (Scala 2.11.8).

    IntelliJ IDEA: выбор SDK Spark.

  7. Нажмите Готово.

Создание автономного проекта Scala

  1. Запустите IntelliJ IDEA и выберите Create New Project (Создать проект), чтобы открыть окно New Project (Новый проект).

  2. Выберите Maven в левой области.

  3. Укажите пакет SDK для Project. Если пусто, выберите "Создать" и перейдите в каталог установки Java.

  4. Установите флажок "Создать" из архетипа .

  5. В списке архетипов выберите org.scala-tools.archetypes:scala-archetype-simple. Этот архетип создает правильную структуру каталогов и загружает необходимые зависимости по умолчанию для записи программы Scala.

    Снимок экрана: выбранный архетип в окне

  6. Выберите Далее.

  7. Разверните координаты артефакта. Укажите соответствующие значения для GroupId и ArtifactId. Имя и расположение автоматически заполняются. В этом руководстве используются следующие значения:

    • GroupId: com.microsoft.spark.example
    • ArtifactId: SparkSimpleApp

    Снимок экрана: параметр

  8. Выберите Далее.

  9. Проверьте параметры и нажмите кнопку "Далее".

  10. Проверьте имя и расположение проекта, а затем нажмите кнопку Готово. Для импорта проекта потребуется несколько минут.

  11. После импорта проекта в левой области перейдите к SparkSimpleApp>src>test>scala>com>microsoft>spark>example. Щелкните MySpec правой кнопкой мыши и выберите "Удалить...". Этот файл не нужен для приложения. Нажмите кнопку ОК в диалоговом окне.

  12. В последующих шагах вы обновите pom.xml , чтобы определить зависимости для приложения Spark Scala. Чтобы эти зависимости загружались и разрешались автоматически, необходимо настроить Maven.

  13. В меню "Файл" выберите "Параметры" , чтобы открыть окно "Параметры ".

  14. В окне "Настройки" перейдите в Build, Execution, Deployment>Build Tools>Maven>Importing.

  15. Установите флажок "Импорт проектов Maven" автоматически .

  16. Выберите Применить, а затем выберите ОК. Затем вы вернетесь в окно проекта.

    :::image type="content" source="./media/apache-spark-create-standalone-application/configure-maven-download.png" alt-text="Configure Maven for automatic downloads." border="true":::
    
  17. В левой области перейдите к src>main> scala >com.microsoft.spark.example, а затем дважды щелкните приложение, чтобы открытьApp.scala.

  18. Замените существующий пример кода следующим кодом и сохраните изменения. Этот код считывает данные из HVAC.csv (доступно во всех кластерах HDInsight Spark). Извлекает строки, имеющие только одну цифру в шестом столбце. И записывает выходные данные в /HVACOut в контейнер хранилища по умолчанию для кластера.

    package com.microsoft.spark.example
    
    import org.apache.spark.SparkConf
    import org.apache.spark.SparkContext
    
    /**
      * Test IO to wasb
      */
    object WasbIOTest {
        def main (arg: Array[String]): Unit = {
            val conf = new SparkConf().setAppName("WASBIOTest")
            val sc = new SparkContext(conf)
    
            val rdd = sc.textFile("wasb:///HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv")
    
            //find the rows which have only one digit in the 7th column in the CSV
            val rdd1 = rdd.filter(s => s.split(",")(6).length() == 1)
    
            rdd1.saveAsTextFile("wasb:///HVACout")
        }
    }
    
  19. В левой области дважды щелкните pom.xml.

  20. В <project>\<properties> добавьте следующие сегменты:

    <scala.version>2.11.8</scala.version>
    <scala.compat.version>2.11.8</scala.compat.version>
    <scala.binary.version>2.11</scala.binary.version>
    
  21. В пределах <project>\<dependencies> добавьте следующие сегменты:

    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_${scala.binary.version}</artifactId>
        <version>2.3.0</version>
    </dependency>
    
    Save changes to pom.xml.
    
  22. Создайте файл .jar. IntelliJ IDEA позволяет создавать JAR-файл в качестве артефакта проекта. Выполните следующие действия.

    1. В меню "Файл" выберите "Структура проекта...".

    2. В окне Структуры проекта перейдите к Артефактам>, нажмите на символ плюс +>JAR>из модулей с зависимостями....

      `Добавление JAR-файла в структуру проекта IntelliJ IDEA`.

    3. В окне "Создание JAR-файла из модулей " выберите значок папки в текстовом поле "Основной класс ".

    4. В окне "Выбор главного класса " выберите класс, который отображается по умолчанию, и нажмите кнопку "ОК".

    5. В окне "Создание JAR-файла из модулей " убедитесь, что выбран параметр извлечения в целевой JAR-файл , а затем нажмите кнопку "ОК". Этот параметр создает один JAR-файл со всеми зависимостями.

      Структура проекта IntelliJ IDEA jar из модуля.

    6. На вкладке "Макет выходных данных " перечислены все jar-файлы, включенные в проект Maven. Вы можете выбрать и удалить те, от которых приложение Scala не имеет прямой зависимости. Для приложения, которое вы создаете здесь, вы можете удалить все, кроме последнего (выходные данные компиляции SparkSimpleApp). Выберите jars для удаления и выберите отрицательный символ -.

      Убедитесь, что установлен флажок "Включить в сборку проекта ". Этот параметр гарантирует, что JAR-файл создается каждый раз при создании или обновлении проекта. Выберите Применить, а затем ОК.

    7. Чтобы создать JAR-файл, перейдите в Сборка>Артефакты сборки>Сборка. Проект будет компилироваться около 30 секунд. Выходной jar-файл создается в папке \out\artifacts.

      Выходные данные артефакта проекта IntelliJ IDEA.

Запуск приложения в кластере Apache Spark

Для запуска приложения в кластере можно использовать следующие подходы:

  • Скопируйте jar-файл приложения в blob-объект хранилища Azure, связанный с кластером. Для этого можно использовать AzCopy, служебную программу командной строки. Существует множество других клиентов, которые можно использовать для отправки данных. Дополнительные сведения см. в разделе "Отправка данных для заданий Apache Hadoop" в HDInsight.

  • Используйте Apache Livy для удаленной отправки задания приложения в кластер Spark. Кластеры Spark в HDInsight включают Livy, предоставляющий конечные точки REST для удалённой отправки заданий Spark. Дополнительные сведения см. в статье "Отправка заданий Apache Spark удаленно с помощью Apache Livy с кластерами Spark в HDInsight".

Очистка ресурсов

Если вы не собираетесь использовать это приложение в дальнейшем, удалите созданный кластер, сделав следующее:

  1. Войдите на портал Azure.

  2. В поле Поиск в верхней части страницы введите HDInsight.

  3. Выберите Кластеры HDInsight в разделе Службы.

  4. В списке кластеров HDInsight, который отобразится, выберите ... рядом с кластером, созданным для этого учебного пособия.

  5. Выберите команду Удалить. Выберите Да.

Снимок экрана: удаление кластера HDInsight с помощью портала Azure.

Следующий шаг

Из этой статьи вы узнали, как создать приложение Apache Spark scala. Перейдите к следующей статье, чтобы узнать, как запустить это приложение в кластере HDInsight Spark с помощью Livy.