Använd Azure Toolkit for IntelliJ för att Apache Spark program för HDInsight-kluster

Den här artikeln visar hur du Apache Spark program på Azure HDInsight med hjälp av Azure Toolkit-plugin-programmet för IntelliJ IDE. Azure HDInsight är en hanterad analystjänst med öppen källkod i molnet. Med tjänsten kan du använda ramverk med öppen källkod som Hadoop, Apache Spark, Apache Hive och Apache Kafka.

Du kan använda plugin-programmet Azure Toolkit på några olika sätt:

  • Utveckla och skicka ett Scala Spark-program till ett HDInsight Spark-kluster.
  • Få åtkomst Azure HDInsight Spark klusterresurser.
  • Utveckla och köra ett Scala Spark-program lokalt.

I den här artikeln kan du se hur du:

  • Använd Azure Toolkit for IntelliJ plugin-programmet
  • Utveckla Apache Spark program
  • Skicka ett program till Azure HDInsight kluster

Förutsättningar

Installera plugin-programmet Scala för IntelliJ IDEA

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.

    IntelliJ IDEA aktiverar scala-plugin-programmet

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

    IntelliJ IDEA installerar scala-plugin-programmet

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

Skapa ett Spark Scala-program för ett HDInsight Spark-kluster

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

  2. Välj Azure 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 alternativ:

    • 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 IDEA

  5. Välj Nästa.

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

    Egenskap Beskrivning
    Projektnamn Ange ett namn. I den här artikeln används myApp .
    Projektplats Ange platsen där du vill spara projektet.
    Projekt-SDK Det här fältet kan vara 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).

    Välja Apache Spark SDK

  7. Välj Slutför. Det kan ta några minuter innan projektet blir tillgängligt.

  8. Spark-projektet skapar automatiskt en artefakt åt dig. Om du vill visa artefakten gör du följande:

    a. Från menyraden går du till File > Project Structure....

    b. I fönstret Project struktur väljer du Artefakter.

    c. Välj Avbryt när du har tittat på artefakten.

    Artefaktinformation i dialogrutan

  9. Lägg till programmets källkod genom att göra följande:

    a. Från Project du till myApp > src > main > scala.

    b. Högerklicka på scala och gå sedan till Ny > Scala-klass.

    Kommandon för att skapa en Scala-klass från Project

    c. I dialogrutan Skapa ny Scala-klass anger du ett namn, väljer Objekt i listrutan Typ och väljer sedan OK.

    Dialogrutan Skapa ny Scala-klass

    d. Filen myApp.scala öppnas sedan i huvudvyn. Ersätt standardkoden med koden nedan:

    import org.apache.spark.SparkConf
    import org.apache.spark.SparkContext
    
    object myApp{
        def main (arg: Array[String]): Unit = {
        val conf = new SparkConf().setAppName("myApp")
        val sc = new SparkContext(conf)
    
        val rdd = sc.textFile("wasbs:///HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv")
    
        //find the rows that have only one digit in the seventh column in the CSV file
        val rdd1 =  rdd.filter(s => s.split(",")(6).length() == 1)
    
        rdd1.saveAsTextFile("wasbs:///HVACOut")
        }
    
    }
    

    Koden läser data från HVAC.csv (tillgänglig på alla HDInsight Spark-kluster), hämtar de rader som bara har en siffra i den sjunde kolumnen i CSV-filen och skriver utdata till under standardlagringscontainern för /HVACOut klustret.

Anslut till ditt HDInsight-kluster

Användaren kan antingen logga in på Azure-prenumerationeneller länka ett HDInsight-kluster. Använd Ambari användarnamn/lösenord eller domän-ansluten autentiseringsuppgift för att ansluta till ditt HDInsight-kluster.

Logga in på din Azure-prenumeration

  1. Från menyraden går du till Visa > verktyg Windows Azure > Explorer.

    IntelliJ IDEA visar Azure Explorer

  2. Högerklicka på Azure-noden i Azure Explorer och välj sedan Logga in.

    IntelliJ IDEA-utforskaren högerklickar du på azure

  3. I dialogrutan Azure Sign In (Azure-inloggning) väljer du Device Login(Enhetsinloggning) och sedan Sign in (Logga in).

    "IntelliJ IDEA azure sign-in device login"

  4. I dialogrutan Azure Device Login (Azure-enhetsinloggning) klickar du på Copy&Open (Kopiera&Öppna).

    "IntelliJ IDEA azure device login"

  5. Klistra in koden i webbläsargränssnittet och klicka sedan på Nästa.

    Dialogrutan Microsoft enter code for HDI (Microsofts dialogruta för att ange kod för HDI)

  6. Ange dina autentiseringsuppgifter för Azure och stäng sedan webbläsaren.

    "Microsoft enter e-mail dialog for HDI" (Microsoft ange e-postdialogruta för HDI)

  7. När du har loggat in visar dialogrutan Välj prenumerationer alla Azure-prenumerationer som är associerade med autentiseringsuppgifterna. Välj din prenumeration och välj sedan knappen Välj.

    Dialogrutan Select Subscriptions (Välj prenumerationer)

  8. Från Azure Explorer expanderar du HDInsight för att visa DE HDInsight Spark-kluster som finns i dina prenumerationer.

    Huvudvyn i IntelliJ IDEA Azure Explorer

  9. Om du vill visa de resurser (till exempel lagringskonton) som är associerade med klustret kan du expandera en klusternamnsnod ytterligare.

    Azure Explorer-lagringskonton

Du kan länka ett HDInsight-kluster med hjälp av det Apache Ambari-hanterade användarnamnet. På samma sätt kan du länka med hjälp av domänen och användarnamnet för ett domän-ansluten HDInsight-kluster, till exempel user1@contoso.com . Du kan också länka Livy Service-kluster.

  1. Från menyraden navigerar du till Visa > verktyg Windows Azure > Explorer.

  2. Från Azure Explorer högerklickar du på noden HDInsight och väljer sedan Länka ett kluster.

    Snabbmeny för Azure Explorer-länkkluster

  3. De tillgängliga alternativen i fönstret Länka ett kluster varierar beroende på vilket värde du väljer i listrutan Länka resurstyp. Ange dina värden och välj sedan OK.

    • HDInsight-kluster

      Egenskap Värde
      Länka resurstyp Välj HDInsight-kluster i listrutan.
      Klusternamn/URL Ange klusternamn.
      Autentiseringstyp Lämna som grundläggande autentisering
      Användarnamn Ange klustrets användarnamn, standard är admin.
      Lösenord Ange ett lösenord för användarnamnet.

      IntelliJ IDEA länka en klusterdialogruta

    • Livy-tjänsten

      Egenskap Värde
      Länka resurstyp Välj Livy Service i listrutan.
      Livy-slutpunkt Ange Livy-slutpunkt
      Klusternamn Ange klusternamn.
      Yarn-slutpunkt Valfritt.
      Autentiseringstyp Lämna som grundläggande autentisering
      Användarnamn Ange klustrets användarnamn, standard är admin.
      Lösenord Ange ett lösenord för användarnamnet.

      IntelliJ IDEA-länk Dialogruta för Livy-kluster

  4. Du kan se ditt länkade kluster från HDInsight-noden.

    Länkat Azure Explorer-kluster1

  5. Du kan också ta bort länken till ett kluster från Azure Explorer.

    Kluster utan länk i Azure Explorer

Köra ett Spark Scala-program i ett HDInsight Spark-kluster

När du har skapat ett Scala-program kan du skicka det till klustret.

  1. Gå Project till myApp > src > main > scala > myApp från . Högerklicka på myApp och välj Skicka Spark-program (det finns förmodligen längst ned i listan).

    Kommandot Submit Spark Application to HDInsight (Skicka Spark-programmet till HDInsight)

  2. I dialogrutan Skicka Spark-program väljer du 1. Spark på HDInsight.

  3. I fönstret Redigera konfiguration anger du följande värden och väljer sedan OK:

    Egenskap Värde
    Spark-kluster (endast Linux) Välj det HDInsight Spark-kluster som du vill köra programmet på.
    Välj en artefakt att skicka Lämna standardinställningen.
    Huvudklassnamn Standardvärdet är huvudklassen från den valda filen. Du kan ändra klassen genom att välja ellipsen(...) och väljer en annan klass.
    Jobbkonfigurationer Du kan ändra standardnycklarna och eller värdena. Mer information finns i Apache Livy REST API.
    Kommandoradsargument Du kan ange argument avgränsade med blanksteg för huvudklassen om det behövs.
    Refererade Jar-filer och refererade filer Du kan ange sökvägarna för de refererade Jar-filerna och filerna om det finns några. Du kan också bläddra bland filer i det virtuella Azure-filsystemet, som för närvarande endast stöder ADLS Gen2-kluster. Mer information finns i Apache Spark Configuration. Se även Så här laddar du upp resurser till klustret.
    Jobb Upload Storage Expandera för att visa ytterligare alternativ.
    Lagringstyp Välj Använd Azure Blob för att ladda upp från listrutan.
    Lagringskonto Ange ditt lagringskonto.
    Storage Nyckel Ange din lagringsnyckel.
    Storage Behållare Välj din lagringscontainer i listrutan när Storage konto och Storage nyckel har angetts.

    Dialogrutan Spark Submission (Spark-överföring)

  4. Välj SparkJobKör för att skicka projektet till det valda klustret. På fliken Fjärr-Spark-jobb i kluster visas jobbkörningens förlopp längst ned. Du kan stoppa programmet genom att klicka på den röda knappen.

    Apache Spark för att skicka

Felsöka Apache Spark lokalt eller via fjärrkonfiguration i ett HDInsight-kluster

Vi rekommenderar också ett annat sätt att skicka Spark-programmet till klustret. Du kan göra det genom att ange parametrarna i IDE för körnings-/felsökningskonfigurationer. Se Felsöka Apache Spark lokalt eller via fjärrlagring i ett HDInsight-kluster med Azure Toolkit for IntelliJ via SSH.

Få åtkomst till och hantera HDInsight Spark-kluster med hjälp av Azure Toolkit for IntelliJ

Du kan göra olika åtgärder med hjälp av Azure Toolkit for IntelliJ. De flesta av åtgärderna startas från Azure Explorer. Från menyraden navigerar du till Visa > verktyg Windows Azure > Explorer.

Öppna jobbvyn

  1. Från Azure Explorer går du till HDInsight-jobb. > <Your Cluster> >

    Noden IntelliJ Azure Explorer-jobbvy

  2. I den högra rutan visar fliken Spark-jobbvy alla program som har körts i klustret. Välj namnet på det program som du vill visa mer information för.

    Information om Spark-jobbvyprogram

  3. Om du vill visa grundläggande jobbinformation som körs hovrar du över jobbdiagrammet. Om du vill visa diagrammen för faser och information som varje jobb genererar väljer du en nod i jobbdiagrammet.

    Information om Jobbfas för Spark-jobbvy

  4. Om du vill visa loggar som används ofta, till exempel Driver Stderr, Driver Stdout och Kataloginformation, väljer du fliken Logg.

    Logginformation för Spark-jobbvy

  5. Du kan visa Spark-historikgränssnittet och YARN-användargränssnittet (på programnivå). Välj en länk överst i fönstret.

Få åtkomst till Spark-historikservern

  1. Från Azure Explorer expanderar du HDInsight, högerklickar på sparkklustrets namn och väljer sedan Open Spark History UI (Öppna Spark-historikgränssnittet).

  2. När du uppmanas till det anger du klustrets administratörsautentiseringsuppgifter, som du angav när du konfigurerade klustret.

  3. På instrumentpanelen för Spark-historikservern kan du använda programnamnet för att leta efter det program som du precis har kört klart. I föregående kod anger du programnamnet med hjälp av val conf = new SparkConf().setAppName("myApp") . Ditt Spark-programnamn är myApp.

Starta Ambari-portalen

  1. I Azure Explorer expanderar du HDInsight, högerklickar på sparkklustrets namn och väljer sedan Open Cluster Hanteringsportal(Ambari) (Öppna kluster Hanteringsportal(Ambari).

  2. När du uppmanas till det anger du administratörsautentiseringsuppgifterna för klustret. Du angav dessa autentiseringsuppgifter under klusterinstallationsprocessen.

Hantera Azure-prenumerationer

Som standard visar Azure Toolkit for IntelliJ Spark-kluster från alla dina Azure-prenumerationer. Om det behövs kan du ange de prenumerationer som du vill komma åt.

  1. Från Azure Explorer högerklickar du på Azure-rotnoden och väljer sedan Välj prenumerationer.

  2. I fönstret Välj prenumerationer avmarkerar du kryssrutorna bredvid de prenumerationer som du inte vill komma åt och väljer sedan Stäng.

Spark-konsolen

Du kan köra Spark Local Console (Scala) eller Spark Livy Interactive Session Console (Scala).

Lokal Spark-konsol (Scala)

Kontrollera att du har uppfyllt WINUTILS.EXE förhandskrav.

  1. Från menyraden går du till Kör > Redigera konfigurationer....

  2. I fönstret Run/Debug Configurations (Kör/felsöka konfigurationer) går du till Apache Spark HDInsight > [Spark på HDInsight] myApp.

  3. Välj fliken i Locally Run huvudfönstret.

  4. Ange följande värden och välj sedan OK:

    Egenskap Värde
    Jobbets huvudklass Standardvärdet är huvudklassen från den valda filen. Du kan ändra klassen genom att välja ellipsen(...) och väljer en annan klass.
    Miljövariabler Kontrollera att värdet för HADOOP_HOME är korrekt.
    WINUTILS.exe plats Kontrollera att sökvägen är korrekt.

    Konfiguration av lokal konsoluppsättning

  5. Gå Project till myApp > src > main > scala > myApp från .

  6. Från menyraden går du till Verktyg > Spark-konsolen > Kör den lokala Spark-konsolen (Scala).

  7. Sedan kan två dialogrutor visas för att fråga dig om du vill åtgärda beroenden automatiskt. I så fall väljer du Åtgärda automatiskt.

    Dialogrutan För automatisk korrigering av IntelliJ IDEA Spark1

    Dialogrutan För automatisk korrigering av IntelliJ IDEA Spark2

  8. Konsolen bör se ut ungefär som på bilden nedan. I konsolfönstret skriver du sc.appName och trycker sedan på Ctrl+Retur. Resultatet visas. Du kan avsluta den lokala konsolen genom att klicka på den röda knappen.

    Resultat från den lokala IntelliJ IDEA-konsolen

Spark Livy Interactive Session Console (Scala)

  1. Från menyraden går du till Kör > Redigera konfigurationer....

  2. I fönstret Run/Debug Configurations (Kör/felsöka konfigurationer) går du till Apache Spark HDInsight > [Spark på HDInsight] myApp.

  3. Välj fliken i Remotely Run in Cluster huvudfönstret.

  4. Ange följande värden och välj sedan OK:

    Egenskap Värde
    Spark-kluster (endast Linux) Välj det HDInsight Spark-kluster som du vill köra programmet på.
    Huvudklassnamn Standardvärdet är huvudklassen från den valda filen. Du kan ändra klassen genom att välja ellipsen(...) och väljer en annan klass.

    Konfiguration av interaktiv konsoluppsättning

  5. Gå Project till myApp > src > main > scala > myApp från .

  6. Från menyraden går du till Verktyg > Spark-konsolen > Kör Spark Livy Interactive Session Console (Scala).

  7. Konsolen bör se ut ungefär som på bilden nedan. I konsolfönstret skriver du sc.appName och trycker sedan på Ctrl+Retur. Resultatet visas. Du kan avsluta den lokala konsolen genom att klicka på den röda knappen.

    Resultat från den interaktiva IntelliJ IDEA-konsolen

Skicka markering till Spark-konsolen

Det är praktiskt att förutse skriptresultatet genom att skicka kod till den lokala konsolen eller Livy Interactive Session Console (Scala). Du kan markera kod i Scala-filen och sedan högerklicka på Skicka markering till Spark-konsolen. Den valda koden skickas till konsolen. Resultatet visas efter koden i konsolen. Konsolen kontrollerar felen om de finns.

Skicka markering till Spark-konsolen

Integrera med HDInsight Identity Broker (HIB)

Anslut till ditt HDInsight ESP-kluster med ID Broker (HIB)

Du kan följa de vanliga stegen för att logga in på Azure-prenumerationen för att ansluta till ditt HDInsight ESP-kluster med ID Broker (HIB). Efter inloggningen visas klusterlistan i Azure Explorer. Mer information finns i Anslut hdinsight-klustret.

Köra ett Spark Scala-program på ett HDInsight ESP-kluster med ID Broker (HIB)

Du kan följa de vanliga stegen för att skicka jobbet till HDInsight ESP-klustret med ID Broker (HIB). Mer information finns i Köra ett Spark Scala-program på ett HDInsight Spark-kluster.

Vi laddar upp nödvändiga filer till en mapp med namnet med ditt inloggningskonto och du kan se uppladdningssökvägen i konfigurationsfilen.

ladda upp sökväg i konfigurationen

Spark-konsolen på ett HDInsight ESP-kluster med ID Broker (HIB)

Du kan köra Spark Local Console (Scala) eller Spark Livy Interactive Session Console (Scala) på ett HDInsight ESP-kluster med ID Broker (HIB). Mer information finns i Spark-konsolen.

Anteckning

För HDInsight ESP-klustret med Id Broker (HIB) kan du länka ett kluster och felsöka Apache Spark-program stöds inte för närvarande.

Rollen Endast läsare

När användare skickar jobb till ett kluster med behörighet som endast läsare krävs Ambari-autentiseringsuppgifter.

  1. Logga in med rollkontot endast läsare.

  2. Från Azure Explorer expanderar du HDInsight för att visa HDInsight-kluster som finns i din prenumeration. Klustren som är markerade med "Role:Reader" har endast läsbehörighet.

    &quot;IntelliJ Azure Explorer Role:Reader&quot;

  3. Högerklicka på klustret med behörigheten endast läsare. Välj Länka det här klustret från snabbmenyn för att länka klustret. Ange Ambari-användarnamnet och lösenordet.

    IntelliJ Azure Explorer– länka det här klustret

  4. Om klustret är länkat uppdateras HDInsight. Klustrets steg länkas.

    Länkad dialogruta för IntelliJ Azure Explorer

  1. Klicka på Noden Jobb. Fönstret Åtkomst till klusterjobb nekad visas.

  2. Klicka på Länka det här klustret för att länka klustret.

    dialogruta för nekad klusterjobbsåtkomst

  1. Skapa en HDInsight-konfiguration. Välj sedan Fjärrkörning i kluster.

  2. Välj ett kluster som endast har behörighet som läsare för Spark-kluster (endast Linux). Varningsmeddelande visas. Du kan klicka på Länka det här klustret för att länka klustret.

    Skapa intelliJ IDEA-körnings-/felsökningskonfiguration

Visa Storage konton

  • För kluster med behörigheten Endast läsare klickar du på Storage Noden Konton, Storage åtkomst nekad visas. Du kan klicka på Öppna Azure Storage Explorer för att Storage Explorer.

    &quot;IntelliJ IDEA Storage åtkomst nekad&quot;

    Knappen IntelliJ IDEA Storage Åtkomst nekad

  • För länkade kluster klickar du Storage noden Konton och Storage åtkomst nekad visas. Du kan klicka på Öppna Azure Storage för att öppna Storage Explorer.

    &quot;IntelliJ IDEA Storage Åtkomst nekad2&quot;

    IntelliJ IDEA Storage knappen Åtkomst nekad2

Konvertera befintliga IntelliJ IDEA-program till att använda Azure Toolkit for IntelliJ

Du kan konvertera de befintliga Spark Scala-program som du skapade i IntelliJ IDEA så att de är kompatibla med Azure Toolkit for IntelliJ. Du kan sedan använda plugin-programmet för att skicka programmen till ett HDInsight Spark-kluster.

  1. Öppna den associerade filen för ett befintligt Spark Scala-program som har skapats via IntelliJ .iml IDEA.

  2. På rotnivå är ett modulelement som liknar följande text:

    <module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
    

    Redigera elementet för att lägga UniqueKey="HDInsightTool" till så att modulelementet ser ut som i följande text:

    <module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4" UniqueKey="HDInsightTool">
    
  3. Spara ändringarna. Programmet bör nu vara kompatibelt med Azure Toolkit for IntelliJ. Du kan testa det genom att högerklicka på projektnamnet i Project. Popup-menyn har nu alternativet Skicka Spark-program till HDInsight.

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 artikeln.

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

Azure Portal tar bort HDInsight-kluster

Nästa steg

I den här artikeln har du lärt dig hur du använder Azure Toolkit for IntelliJ plugin-programmet för att utveckla Apache Spark program som skrivits i Scala. Skickade dem sedan till ett HDInsight Spark-kluster direkt från IntelliJ IDE (Integrated Development Environment). Gå vidare till nästa artikel för att se hur de data som du har registrerat i Apache Spark kan hämtas till ett BI-analysverktyg såsom Power BI.