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. I artikeln används 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 guiden får du lära 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

Installera Scala-plugin-programmet genom att följa stegen nedan:

  1. Öppna IntelliJ IDEA.

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

    "IntelliJ IDEA enable scala plugin"

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

    "IntelliJ IDEA install scala plugin"

  4. 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 den vänstra rutan.

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

  4. I listrutan Build tool (Byggverktyg) 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.

    Dialogrutan Ny Project IntelliJ

  5. Välj Nästa.

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

    Egenskap Beskrivning
    Projektnamn Ange ett namn.
    Projektplats Ange platsen där du vill spara projektet.
    Projekt-SDK Det här fältet är tomt första gången du använder 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 Välja 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.

    Skärmbild som visar den valda arketypen i fönstret Project arkivet.

  6. Välj Nästa.

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

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

    Skärmbild som visar alternativet Artefaktkoordinater i fönstret Project plats.

  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 från den vänstra rutan 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 beroendena för Spark Scala-programmet. För att dessa beroenden ska laddas ned och lösas 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. Du kommer sedan tillbaka till projektfönstret.

    Konfigurera Maven för automatisk nedladdning

  17. I den vänstra rutan går du till src > main > scala > com.microsoft.spark.example och dubbelklickar sedan 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>
    

    Spara ändringarna i 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...).

      &quot;IntelliJ IDEA project structure add jar&quot;

    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.

      &quot;Projektstruktur för IntelliJ IDEA välj klass&quot;

    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-projektstruktur-jar från modul

    6. Fliken Utdatalayout visar en lista över alla jar-er 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 som du skapar här kan du ta bort alla utom den sista (SparkSimpleApp-kompileringsutdata). Välj jar-filer som ska tas bort och välj sedan den negativa symbolen - .

      Ta bort utdata för IntelliJ IDEA-projektstrukturen

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

    7. Om du vill skapa jar-programmet går du till Build > Artifacts Build (Skapa > artefakter) Build (Skapa artefakter). Projektet kompileras inom cirka 30 sekunder. Utdatans jar-fil skapas under \out\artifacts.

      Utdata från IntelliJ IDEA-projektartefakter

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 tänker 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 det kluster som du skapade för den här självstudien.

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

Skärmbild som visar hur du tar bort ett HDInsight-kluster via Azure Portal.

Nästa steg

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.