Tutorial: Erstellen einer Scala Maven-Anwendung für Apache Spark in HDInsight mithilfe von IntelliJTutorial: Create a Scala Maven application for Apache Spark in HDInsight using IntelliJ

In diesem Tutorial erfahren Sie, wie Sie eine in Scala geschriebene Apache Spark-Anwendung erstellen, die Apache Maven mit IntelliJ IDEA nutzt.In this tutorial, you learn how to create an Apache Spark application written in Scala using Apache Maven with IntelliJ IDEA. Dabei wird Apache Maven als Buildsystem verwendet. Ausgangspunkt ist ein vorhandener, von IntelliJ IDEA bereitgestellter Maven-Archetyp für Scala.The article uses Apache Maven as the build system and starts with an existing Maven archetype for Scala provided by IntelliJ IDEA. Das Erstellen einer Scala-Anwendung in IntelliJ IDEA umfasst die folgenden Schritte:Creating a Scala application in IntelliJ IDEA involves the following steps:

  • Verwenden von Maven als BuildsystemUse Maven as the build system.
  • Aktualisieren der Projektobjektmodell-Datei (POM-Datei) zum Auflösen von Spark-ModulabhängigkeitenUpdate Project Object Model (POM) file to resolve Spark module dependencies.
  • Schreiben der Anwendung in ScalaWrite your application in Scala.
  • Generieren einer JAR-Datei, die an HDInsight Spark-Cluster übermittelt werden kannGenerate a jar file that can be submitted to HDInsight Spark clusters.
  • Ausführen der Anwendung in einem Spark-Cluster mithilfe von LivyRun the application on Spark cluster using Livy.

In diesem Tutorial lernen Sie Folgendes:In this tutorial, you learn how to:

  • Installieren des Scala-Plug-Ins für IntelliJ IDEAInstall Scala plugin for IntelliJ IDEA
  • Verwenden von IntelliJ zum Entwickeln einer Scala Maven-AnwendungUse IntelliJ to develop a Scala Maven application
  • Erstellen eines eigenständigen Scala-ProjektsCreate a standalone Scala project

VoraussetzungenPrerequisites

Installieren des Scala-Plug-Ins für IntelliJ IDEAInstall Scala plugin for IntelliJ IDEA

Führen Sie die folgenden Schritte aus, um das Scala-Plug-In zu installieren:Perform the following steps to install the Scala plugin:

  1. Öffnen Sie IntelliJ IDEA.Open IntelliJ IDEA.

  2. Navigieren Sie auf der Willkommensseite zu Konfigurieren > Plug-Ins, um das Fenster Plug-Ins zu öffnen.On the welcome screen, navigate to Configure > Plugins to open the Plugins window.

    Scala-Plug-In aktivieren

  3. Wählen Sie für das in dem neuen Fenster empfohlene Scala-Plug-In die Option Installieren aus.Select Install for the Scala plugin that is featured in the new window.

    Scala-Plug-In installieren

  4. Nach erfolgreicher Plug-In-Installation müssen Sie die IDE neu starten.After the plugin installs successfully, you must restart the IDE.

Erstellen der Anwendung mit IntelliJUse IntelliJ to create application

  1. Starten Sie IntelliJ IDEA, und wählen Sie Create New Project (Neues Projekt erstellen) aus, um das Fenster New Project (Neues Projekt) zu öffnen.Start IntelliJ IDEA, and select Create New Project to open the New Project window.

  2. Wählen Sie im linken Bereich Azure Spark/HDInsight aus.Select Azure Spark/HDInsight from the left pane.

  3. Wählen Sie im Hauptfenster Spark Project (Scala) (Spark-Projekt (Scala)) aus.Select Spark Project (Scala) from the main window.

  4. Wählen Sie in der Dropdownliste Build tool (Buildtool) eine der folgenden Optionen aus:From the Build tool drop-down list, select one of the following:

    • Maven für die Unterstützung des Scala-Projekterstellungs-AssistentenMaven for Scala project-creation wizard support.
    • SBT zum Verwalten von Abhängigkeiten und Erstellen für das Scala-ProjektSBT for managing the dependencies and building for the Scala project.

    Dialogfeld „Neues Projekt“

  5. Klicken Sie auf Weiter.Select Next.

  6. Geben Sie im Fenster New Project (Neues Projekt) die folgenden Informationen an:In the New Project window, provide the following information:

    EigenschaftProperty BESCHREIBUNGDescription
    ProjektnameProject name Geben Sie einen Namen ein.Enter a name.
    Project location (Projektspeicherort)Project location Geben Sie den gewünschten Speicherort für Ihr Projekt ein.Enter the desired location to save your project.
    Project SDK (Projekt-SDK)Project SDK Dieses Feld ist bei der erstmaligen Verwendung von IDEA leer.This will be blank on your first use of IDEA. Wählen Sie New... (Neu...) aus, und navigieren Sie zu Ihrem JDK.Select New... and navigate to your JDK.
    Spark-VersionSpark Version Der Erstellungs-Assistent integriert die passende Version für das Spark-SDK und das Scala-SDK.The creation wizard integrates the proper version for Spark SDK and Scala SDK. Wenn die Spark-Clusterversion niedriger als 2.0 ist, wählen Sie Spark 1.x aus.If the Spark cluster version is earlier than 2.0, select Spark 1.x. Wählen Sie andernfalls Spark 2.x aus.Otherwise, select Spark2.x. In diesem Beispiel wird Spark 2.3.0 (Scala 2.11.8) verwendet.This example uses Spark 2.3.0 (Scala 2.11.8).

    Auswählen des Spark-SDK

  7. Wählen Sie Fertig stellen aus.Select Finish.

Erstellen eines eigenständigen Scala-ProjektsCreate a standalone Scala project

  1. Starten Sie IntelliJ IDEA, und wählen Sie Create New Project (Neues Projekt erstellen) aus, um das Fenster New Project (Neues Projekt) zu öffnen.Start IntelliJ IDEA, and select Create New Project to open the New Project window.

  2. Wählen Sie im linken Bereich die Option Maven aus.Select Maven from the left pane.

  3. Geben Sie ein Projekt-SDKan.Specify a Project SDK. Klicken Sie auf New... (Neu...), und navigieren Sie zum Installationsverzeichnis von Java.If blank, select New... and navigate to the Java installation directory.

  4. Aktivieren Sie das Kontrollkästchen Create from archetype (Archetypbasierte Erstellung).Select the Create from archetype checkbox.

  5. Wählen Sie in der Liste mit den Archetypen die Option org.scala-tools.archetypes:scala-archetype-simpleaus.From the list of archetypes, select org.scala-tools.archetypes:scala-archetype-simple. Dieser Archetyp erstellt die passende Verzeichnisstruktur und lädt die erforderlichen Standardabhängigkeiten zum Schreiben des Scala-Programms herunter.This archetype creates the right directory structure and downloads the required default dependencies to write Scala program.

    Maven-Projekt erstellen

  6. Klicken Sie auf Weiter.Select Next.

  7. Geben Sie passende Werte für GroupId, ArtifactId und Version an.Provide relevant values for GroupId, ArtifactId, and Version. In diesem Tutorial werden die folgenden Werte verwendet:The following values are used in this tutorial:

    • GroupId: com.microsoft.spark.exampleGroupId: com.microsoft.spark.example
    • ArtifactId: SparkSimpleAppArtifactId: SparkSimpleApp
  8. Klicken Sie auf Weiter.Select Next.

  9. Überprüfen Sie die Einstellungen, und wählen Sie Weiter aus.Verify the settings and then select Next.

  10. Überprüfen Sie den Projektnamen und einen Speicherort, und wählen Sie anschließend Fertig stellen aus.Verify the project name and location, and then select Finish. Das Importieren des Projekts dauert ein paar Minuten.The project will take a few minutes to import.

  11. Navigieren Sie nach Abschluss des Projektimports im linken Bereich zu SparkSimpleApp > src > test > scala > com > microsoft > spark > example.Once the project has imported, from the left pane navigate to SparkSimpleApp > src > test > scala > com > microsoft > spark > example. Klicken Sie mit der rechten Maustaste auf MySpec, und wählen Sie Delete... (Löschen...) aus. Sie benötigen diese Datei nicht für die Anwendung.Right-click MySpec, and then select Delete.... You do not need this file for the application. Wählen Sie im Dialogfeld OK aus.Select OK in the dialog box.

  12. In den folgenden Schritten wird die Datei pom.xml aktualisiert, um die Abhängigkeiten für die Spark Scala-Anwendung zu definieren.In the subsequent steps, you update the pom.xml to define the dependencies for the Spark Scala application. Damit diese Abhängigkeiten automatisch heruntergeladen und aufgelöst werden, muss Maven entsprechend konfiguriert sein.For those dependencies to be downloaded and resolved automatically, you must configure Maven accordingly.

  13. Wählen Sie im Menü File (Datei) die Option Settings (Einstellungen) aus, um das Fenster Settings (Einstellungen) zu öffnen.From the File menu, select Settings to open the Settings window.

  14. Navigieren Sie im Fenster Settings (Einstellungen) zu Build, Execution, Deployment > Build Tools > Maven > Importing („Erstellung, Ausführung, Bereitstellung“ > „Buildtools“ > „Maven“ > „Importieren“).From the Settings window, navigate to Build, Execution, Deployment > Build Tools > Maven > Importing.

  15. Aktivieren Sie das Kontrollkästchen Import Maven projects automatically (Maven-Projekte automatisch importieren).Select the Import Maven projects automatically checkbox.

  16. Klicken Sie auf Apply (Anwenden) und dann auf OK.Select Apply, and then select OK. Daraufhin wird wieder das Projektfenster angezeigt.You will then be returned to the project window.

    Maven für automatische Downloads konfigurieren

  17. Navigieren Sie im linken Bereich zu src > main > scala > com.microsoft.spark.example, und doppelklicken Sie dann auf App, um „App.scala“ zu öffnen.From the left pane, navigate to src > main > scala > com.microsoft.spark.example, and then double-click App to open App.scala.

  18. Ersetzen Sie den vorhandenen Beispielcode durch den folgenden Code, und speichern Sie die Änderungen.Replace the existing sample code with the following code and save the changes. Dieser Code liest die Daten aus der Datei „HVAC.csv“ (für alle HDInsight Spark-Cluster verfügbar), ruft die Zeilen ab, die nur eine Ziffer in der sechsten Spalte enthalten, und schreibt die Ausgabe in /HVACOut unter dem Standardspeichercontainer für den Cluster.This code reads the data from the HVAC.csv (available on all HDInsight Spark clusters), retrieves the rows that only have one digit in the sixth column, and writes the output to /HVACOut under the default storage container for the cluster.

    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. Doppelklicken Sie im linken Bereich auf pom.xml.In the left pane, double-click pom.xml.

  20. Fügen Sie in <project>\<properties> folgende Segmente hinzu:Within <project>\<properties> add the following segments:

      <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. Fügen Sie in <project>\<dependencies> folgende Segmente hinzu:Within <project>\<dependencies> add the following segments:

       <dependency>
         <groupId>org.apache.spark</groupId>
         <artifactId>spark-core_${scala.binary.version}</artifactId>
         <version>2.3.0</version>
       </dependency>
    

    Speichern Sie die Änderungen in „pom.xml“.Save changes to pom.xml.

  22. Erstellen Sie die JAR-Datei.Create the .jar file. IntelliJ IDEA ermöglicht die Erstellung von JAR als Projektartefakt.IntelliJ IDEA enables creation of JAR as an artifact of a project. Führen Sie die folgenden Schritte aus:Perform the following steps.

    1. Wählen Sie im Menü File (Datei) die Option Project Structure... (Projektstruktur...) aus.From the File menu, select Project Structure....

    2. Navigieren Sie im Fenster Project Structure (Projektstruktur) zu Artifacts > + > JAR > From modules with dependencies... („Artefakte“ > Plussymbol > „JAR“ > „Aus Modulen mit Abhängigkeiten...“).From the Project Structure window, navigate to Artifacts > the plus symbol + > JAR > From modules with dependencies....

      Erstellen von JAR1

    3. Wählen Sie im Fenster Create JAR from Modules (JAR aus Modulen erstellen) das Ordnersymbol im Textfeld Main Class (Hauptklasse) aus.In the Create JAR from Modules window, select the folder icon in the Main Class text box.

    4. Wählen Sie im Fenster Select Main Class (Hauptklasse auswählen) die standardmäßig angezeigte Klasse und anschließend OK aus.In the Select Main Class window, select the class that appears by default and then select OK.

      Erstellen von JAR2

    5. Vergewissern Sie sich im Fenster Create JAR from Modules (JAR aus Modulen erstellen), dass die Option extract to the target JAR (Extrahieren in die JAR-Zieldatei) aktiviert ist, und wählen Sie anschließend OK aus.In the Create JAR from Modules window, ensure the extract to the target JAR option is selected, and then select OK. Mit dieser Einstellung wird eine einzelne JAR-Datei mit allen Abhängigkeiten erstellt.This setting creates a single JAR with all dependencies.

      Erstellen von JAR3

    6. Die Registerkarte Output Layout führt alle JAR-Dateien des Maven-Projekts auf.The Output Layout tab lists all the jars that are included as part of the Maven project. Sie können die Dateien auswählen und löschen, zu denen die Scala-Anwendung keine direkte Abhängigkeit hat.You can select and delete the ones on which the Scala application has no direct dependency. Bei der hier erstellten Anwendung können Sie alle bis auf die letzte (SparkSimpleApp-Kompilierungsausgabe) entfernen.For the application, you are creating here, you can remove all but the last one (SparkSimpleApp compile output). Wählen Sie die zu löschenden JAR-Dateien und anschließend das Minussymbol - aus.Select the jars to delete and then select the negative symbol -.

      Erstellen von JAR4

      Vergewissern Sie sich, dass das Kontrollkästchen Include in project build (In Projektbuild einbeziehen) aktiviert ist, damit die JAR-Datei bei jeder Projekterstellung oder -aktualisierung erstellt wird.Ensure sure the Include in project build checkbox is selected, which ensures that the jar is created every time the project is built or updated. Wählen Sie Apply (Übernehmen) und anschließend OK aus.Select Apply and then OK.

    7. Navigieren Sie zum Erstellen der JAR-Datei zu Build > Build Artifacts > Build („Erstellen“ > „Artefakte erstellen“ > „Erstellen“).To create the jar, navigate to Build > Build Artifacts > Build. Das Projekt wird in ca. 30 Sekunden kompiliert.The project will compile in about 30 seconds. Die JAR-Ausgabe wird unter \out\artifacts erstellt.The output jar is created under \out\artifacts.

      output

Ausführen der Anwendung im Apache Spark-ClusterRun the application on the Apache Spark cluster

Sie können die folgenden Ansätze nutzen, um die Anwendung im Cluster auszuführen:To run the application on the cluster, you can use the following approaches:

Bereinigen von RessourcenClean up resources

Wenn Sie diese Anwendung nicht mehr benötigen, gehen Sie wie folgt vor, um den erstellten Cluster zu löschen:If you're not going to continue to use this application, delete the cluster that you created with the following steps:

  1. Melden Sie sich beim Azure-Portal an.Sign in to the Azure portal.

  2. Geben Sie oben im Suchfeld den Suchbegriff HDInsight ein.In the Search box at the top, type HDInsight.

  3. Wählen Sie unter Dienste die Option HDInsight-Cluster aus.Select HDInsight clusters under Services.

  4. Klicken Sie in der daraufhin angezeigten Liste mit den HDInsight-Clustern neben dem Cluster, den Sie für dieses Tutorial erstellt haben, auf die Auslassungspunkte ( ... ).In the list of HDInsight clusters that appears, select the ... next to the cluster that you created for this tutorial.

  5. Klicken Sie auf Löschen.Select Delete. Wählen Sie Ja aus.Select Yes.

Löschen eines HDInsight-ClustersDelete an HDInsight cluster

Nächster SchrittNext step

In diesem Artikel haben Sie gelernt, wie eine Apache Spark Scala-Anwendung erstellt wird.In this article, you learned how to create an Apache Spark scala application. Im nächsten Artikel erfahren Sie, wie Sie diese Anwendung in einem HDInsight Spark-Cluster mit Livy ausführen.Advance to the next article to learn how to run this application on an HDInsight Spark cluster using Livy.