Självstudie: Skapa ett Scala Maven-program för Apache Spark i HDInsight med hjälp av IntelliJ

I den här självstudien lär du dig att skapa ett Apache Spark-program som skrivits i Scala med hjälp av Apache Maven med IntelliJ IDEA. Artikeln använder Apache Maven som byggsystem. Och börjar med en befintlig Maven-arketyp för Scala som tillhandahålls av IntelliJ IDEA. Att skapa ett Scala-program i IntelliJ IDEA innefattar följande steg:

  • Använd Maven som build-system.
  • Uppdatera POM-filen (Project Object Model) för att hantera Spark-modulens beroenden.
  • Skriv ditt program i Scala.
  • Generera en jar-fil som kan skickas till HDInsight Spark-kluster.
  • Kör programmet på ett Spark-kluster med Livy.

I den här självstudien lär du dig att:

  • Installera plugin-programmet Scala för IntelliJ IDEA
  • Använda IntelliJ till att utveckla ett Scala Maven-program
  • Skapa ett fristående Scala-projekt

Förutsättningar

Installera plugin-programmet Scala för IntelliJ IDEA

Utför följande steg för att installera Scala-plugin-programmet:

  1. Öppna IntelliJ IDEA.

  2. På välkomstskärmen går du till Konfigurera>Plugin-program för att öppna fönstret Plugin-program.

    Screenshot showing IntelliJ Welcome Screen.

  3. Välj Installera för Azure Toolkit för IntelliJ.

    Screenshot showing IntelliJ Azure Tool Kit.

  4. Välj Installera för det Scala-plugin-program som visas i det nya fönstret.

    Screenshot showing IntelliJ Scala Plugin.

  5. Du måste starta om IDE när plugin-programmet har installerats.

Använda IntelliJ till att skapa program

  1. Starta IntelliJ IDEA och välj Skapa nytt projekt för att öppna fönstret Nytt projekt.

  2. Välj Apache Spark/HDInsight i det vänstra fönstret.

  3. Välj Spark-projekt (Scala) i huvudfönstret.

  4. I listrutan Build tool (Skapa) väljer du något av följande värden:

    • Maven för guidestöd när du skapar Scala-projekt.
    • SBT för att hantera beroenden när du skapar Scala-projektet.

    Screenshot showing create application.

  5. Välj Nästa.

  6. I fönstret Nytt projekt anger du följande information:

    Property beskrivning
    Projektnamn Ange ett namn.
    Projektplats Ange platsen där projektet ska sparas.
    Projekt-SDK Det här fältet kommer att vara tomt vid din första användning av IDEA. Välj Nytt... och navigera till din JDK.
    Spark-version Skapandeguiden integrerar rätt version för Spark SDK och Scala SDK. Om Sparks klusterversion är äldre än 2.0 väljer du Spark 1.x. Annars väljer du Spark 2.x. I det här exemplet används Spark 2.3.0 (Scala 2.11.8).

    IntelliJ IDEA Selecting the Spark SDK.

  7. Välj Slutför.

Skapa ett fristående Scala-projekt

  1. Starta IntelliJ IDEA och välj Skapa nytt projekt för att öppna fönstret Nytt projekt.

  2. Välj Maven i den vänstra rutan.

  3. Ange en Projekt-SDK. Om det är tomt väljer du Nytt... och går till installationskatalogen för Java.

  4. Markera kryssrutan Create from archetype (Skapa från arketyp).

  5. I listan över arketyper väljer du org.scala-tools.archetypes:scala-archetype-simple. Den här arketypen skapar rätt katalogstruktur och laddar ned de beroenden som krävs för att skriva Scala-program.

    Screenshot shows the selected archetype in the New Project window.

  6. Välj Nästa.

  7. Expandera Artefaktkoordinater. Ange relevanta värden för GroupId och ArtifactId. Namn och Plats fylls i automatiskt. I den här självstudien används följande värden:

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

    Screenshot shows the Artifact Coordinates option in the New Project window.

  8. Välj Nästa.

  9. Kontrollera inställningarna och välj sedan Nästa.

  10. Kontrollera projektets namn och plats och välj sedan Slutför. Projektet kan ta några minuter att importeras.

  11. När projektet har importerats går du i det vänstra fönstret till SparkSimpleApp>src>test>scala>com>microsoft>spark>example. Högerklicka på MySpec och välj sedan Ta bort.... Du behöver inte den här filen för programmet. Välj OK i dialogrutan.

  12. I de senare stegen uppdaterar du pom.xml för att definiera beroenden för Spark Scala-programmet. För att dessa beroenden ska laddas ned och matchas automatiskt måste du konfigurera Maven.

  13. Från Arkiv-menyn väljer du Inställningar för att öppna fönstret Inställningar.

  14. I fönstret Inställningar går du till Build, Execution, Deployment (Skapa, köra och distribuera)>Build Tools>Maven>Import.

  15. Markera kryssrutan Import Maven projects automatically (Importera Maven-projekt automatiskt).

  16. Tryck på Tillämpa och välj sedan OK. Sedan returneras du till projektfönstret.

    :::image type="content" source="./media/apache-spark-create-standalone-application/configure-maven-download.png" alt-text="Configure Maven for automatic downloads." border="true":::
    
  17. I den vänstra rutan går du till src>main>scala>com.microsoft.spark.example och dubbelklickar på App för att öppna App.scala.

  18. Ersätt den befintliga exempelkoden med följande kod och spara ändringarna. Den här koden läser data från HVAC.csv (tillgänglig i alla HDInsight Spark-kluster). Hämtar de rader som bara har en siffra i den sjätte kolumnen. Och skriver utdata till /HVACOut under standardlagringscontainern för klustret.

    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. I den vänstra rutan dubbelklickar du på pom.xml.

  20. I <project>\<properties> lägger du till följande segment:

    <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. I <project>\<dependencies> lägger du till följande segment:

    <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. Skapa .jar-filen. Med IntelliJ IDEA går det att skapa JAR-filen som en artefakt av ett projekt. Följ dessa steg.

    1. Arkiv-menyn väljer du Projektstruktur....

    2. I fönstret Projektstruktur går du till Artefakter>plustecknet +>JAR>From modules with dependencies... (Från moduler med beroenden...).

      `IntelliJ IDEA project structure add jar`.

    3. I fönstret Skapa JAR från moduler väljer du mappikonen i textrutan Main Class (Main-klass).

    4. I fönstret Select Main Class (Välj Main-klass) väljer du den klass som visas som standard och sedan OK.

      `IntelliJ IDEA project structure select class`.

    5. I fönstret Create JAR from Modules (Skapa JAR-fil från moduler) kontrollerar du att alternativet Extract to the target JAR (Extrahera till mål-JAR) är markerat. Välj sedan OK. Den här inställningen skapar en enda JAR-fil med alla beroenden.

      IntelliJ IDEA project structure jar from module.

    6. Fliken Output Layout (Utdatalayout) visar alla jar-filer som ingår i Maven-projektet. Du kan markera och ta bort sådana som Scala-programmet inte har något direkt beroende till. För programmet skapar du här, du kan ta bort alla utom den sista (SparkSimpleApp kompilera utdata). Välj de jar-filer som ska tas bort och välj sedan minustecknet -.

      `IntelliJ IDEA project structure delete output`.

      Kontrollera att kryssrutan Inkludera i projektversion är markerad. Det här alternativet säkerställer att jar-filen skapas varje gång projektet skapas eller uppdateras. Välj Applicera och sedan OK.

    7. Skapa jar-filen genom att gå till Skapa>Build Artifacts (Skapa artefakter)>Skapa. Projektet kompileras inom cirka 30 sekunder. Utdatans jar-fil skapas under \out\artifacts.

      IntelliJ IDEA project artifact output.

Köra programmet på Apache Spark-klustret

Om du vill köra programmet på klustret, kan du använda följande metoder:

Rensa resurser

Om du inte kommer att fortsätta att använda det här programmet tar du bort klustret som du skapade med följande steg:

  1. Logga in på Azure-portalen.

  2. I rutan Sök längst upp skriver du HDInsight.

  3. Välj HDInsight-kluster under Tjänster.

  4. I listan över HDInsight-kluster som visas väljer du ... bredvid klustret som du skapade för den här självstudien.

  5. Välj Ta bort. Välj Ja.

Screenshot showing how to delete an HDInsight cluster via the Azure portal.

Gå vidare

I den här artikeln har du lärt dig att skapa ett Apache Spark Scala-program. Gå vidare till nästa artikel om du vill lära dig att köra programmet på ett HDInsight Spark-kluster med Livy.