Share via


Tutorial: Erstellen einer Apache Spark-Anwendung mit IntelliJ mithilfe eines Synapse-Arbeitsbereichs

In diesem Tutorial wird gezeigt, wie Sie mit dem Plug-In „Azure-Toolkit für IntelliJ“ in Scala geschriebene Apache Spark-Anwendungen entwickeln und anschließend direkt aus der IntelliJ-IDE (Integrated Development Environment, integrierte Entwicklungsumgebung) an einen serverlosen Apache Spark-Pool übermitteln. Sie können das Plug-In auf mehrere Arten verwenden:

  • Entwickeln einer Scala Spark-Anwendung und Übermitteln der Anwendung an einen Spark-Pool
  • Zugreifen auf die Ressourcen Ihres Spark-Pools
  • Entwickeln und lokales Ausführen einer Scala Spark-Anwendung

In diesem Tutorial lernen Sie Folgendes:

  • Verwenden des Plug-Ins „Azure-Toolkit für IntelliJ“
  • Entwickeln von Apache Spark-Anwendungen
  • Übermitteln einer Anwendung an Spark-Pools

Voraussetzungen

Erstellen einer Spark Scala-Anwendung für einen Spark-Pool

  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.

  2. Wählen Sie im linken Bereich Apache Spark/HDInsight aus.

  3. Wählen Sie im Hauptfenster Spark Project with Samples (Scala) (Spark-Projekt mit Beispielen (Scala)) aus.

  4. Wählen Sie in der Dropdownliste Build tool (Buildtool) einen der folgenden Typen aus:

    • Maven für die Unterstützung des Scala-Projekterstellungs-Assistenten
    • SBT zum Verwalten von Abhängigkeiten und Erstellen für das Scala-Projekt

    IntelliJ IDEA New Project dialog box

  5. Wählen Sie Weiter aus.

  6. Geben Sie im Fenster New Project (Neues Projekt) die folgenden Informationen an:

    Eigenschaft BESCHREIBUNG
    Projektname Geben Sie einen Namen ein. In diesem Tutorial wird myApp verwendet.
    Projektspeicherort Geben Sie den gewünschten Speicherort für Ihr Projekt ein.
    Project SDK (Projekt-SDK) Dieses Feld ist bei der erstmaligen Verwendung von IDEA möglicherweise leer. Wählen Sie New... (Neu...) aus, und navigieren Sie zu Ihrem JDK.
    Spark-Version Der Erstellungs-Assistent integriert die passende Version für das Spark-SDK und das Scala-SDK. Hier können Sie die Spark-Version auswählen, die Sie benötigen.

    Selecting the Apache Spark SDK

  7. Wählen Sie Fertig stellenaus. Es kann einige Minuten dauern, bis das Projekt verfügbar ist.

  8. Das Spark-Projekt erstellt automatisch ein Artefakt. Führen Sie zum Anzeigen des Artefakts die folgenden Schritte aus:

    a. Navigieren Sie auf der Menüleiste zu Datei>Projektstruktur.

    b. Wählen Sie im Fenster Projektstruktur die Option Artefakte aus.

    c. Wählen Sie Abbrechen aus, nachdem Sie sich das Artefakt angesehen haben.

    Artifact info in the dialog box

  9. Navigieren Sie unter myApp>src>main>scala>sample>LogQuery zu LogQuery. In diesem Tutorial wird LogQuery verwendet.

    Commands for creating a Scala class from Project

Herstellen einer Verbindung mit Ihren Spark-Pools

Melden Sie sich beim Azure-Abonnement an, um eine Verbindung mit Ihren Spark-Pools herzustellen.

Melden Sie sich bei Ihrem Azure-Abonnement an.

  1. Navigieren Sie in der Menüleiste zu Ansicht>Toolfenster>Azure Explorer.

    IntelliJ IDEA shows Azure Explorer

  2. Klicken Sie im Azure Explorer mit der rechten Maustaste auf den Knoten Azure, und wählen Sie dann Anmelden aus.

    IntelliJ IDEA explorer right-click Azure

  3. Wählen Sie im Dialogfeld Azure Sign In (Azure-Anmeldung) die Option Device Login (Geräteanmeldung) aus, und klicken Sie dann auf Sign in (Anmelden).

    IntelliJ IDEA Azure sign-in

  4. Wählen Sie im Dialogfeld Azure Device Login (Azure-Geräteanmeldung) die Option Copy&Open (Kopieren und öffnen) aus.

    IntelliJ IDEA Azure device login

  5. Fügen Sie den Code auf der Benutzeroberfläche des Browsers ein, und wählen Sie dann Next (Weiter) aus.

    Microsoft enters code dialog for HDI

  6. Geben Sie Ihre Azure-Anmeldeinformationen ein, und schließen Sie den Browser.

    Microsoft enters e-mail dialog for HDI

  7. Nachdem Sie sich angemeldet haben, werden im Dialogfeld Abonnements auswählen alle Azure-Abonnements aufgelistet, die den Anmeldeinformationen zugeordnet sind. Wählen Sie Ihr Abonnement und anschließend Auswählen aus.

    The Select Subscriptions dialog box

  8. Erweitern Sie im Azure-Explorer die Option Apache Spark on Synapse (Apache Spark in Synapse), um die in Ihren Abonnements enthaltenen Arbeitsbereiche anzuzeigen.

    IntelliJ IDEA Azure Explorer main view

  9. Zum Anzeigen der Spark-Pools können Sie einen Arbeitsbereich noch weiter erweitern.

    Azure Explorer storage accounts

Remoteausführung einer Spark Scala-Anwendung für einen Spark-Pool

Nachdem Sie eine Scala-Anwendung erstellt haben, können Sie sie remote ausführen.

  1. Öffnen Sie das Fenster für die Ausführungs-/Debugkonfiguration, indem Sie das Symbol auswählen.

    The Submit Spark Application to HDInsight command 1

  2. Wählen Sie im Dialogfeld für die Ausführungs-/Debugkonfiguration die Option + und anschließend Apache Spark on Synapse (Apache Spark in Synapse) aus.

    The Submit Spark Application to HDInsight command 2

  3. Geben Sie im Fenster für die Ausführungs-/Debugkonfiguration die folgenden Werte an, und wählen Sie anschließend OK aus:

    Eigenschaft Wert
    Spark-Pools Wählen Sie die Spark-Pools aus, in denen Sie Ihre Anwendung ausführen möchten.
    Select an Artifact to submit (Auswahl eines zu übermittelnden Artefakts) Behalten Sie die Standardeinstellung bei.
    „Main class name“ (Name der Hauptklasse) Der Standardwert ist die Hauptklasse der ausgewählten Datei. Sie können die Klasse ändern, indem Sie die Schaltfläche mit den Auslassungspunkten ( ) und anschließend eine andere Klasse auswählen.
    Job configurations (Auftragskonfigurationen) Sie können die Standardschlüssel und -werte ändern. Weitere Informationen finden Sie unter Apache Livy-REST-API.
    Befehlszeilenargumente Sie können bei Bedarf durch Leerzeichen getrennte Argumente für die Hauptklasse eingeben.
    Referenced Jars and Referenced Files („Referenzierte JARs“ und „Referenzierte Dateien“) Sie können bei Bedarf die Pfade für die JAR-Dateien und für die anderen Dateien eingeben, auf die verwiesen wird. Sie können auch Dateien im virtuellen Dateisystem von Azure durchsuchen, das derzeit nur ADLS Gen2-Cluster unterstützt. Weitere Informationen finden Sie unter: Apache Spark-Konfiguration und Schnellstart: Verwenden von Azure Storage-Explorer zum Erstellen eines Blobs.
    Job Upload Storage (Speicher für Auftragsupload) Erweitern Sie die Option, um zusätzliche Optionen anzuzeigen.
    Speichertyp Wählen Sie in der Dropdownliste Use Azure Blob to upload (Azure-Blob für Upload verwenden) oder Use cluster default storage account to upload (Standardspeicherkonto des Clusters für Upload verwenden).
    Speicherkonto Geben Sie Ihr Speicherkonto ein.
    Storage Key (Speicherschlüssel) Geben Sie Ihren Speicherschlüssel ein.
    Speichercontainer Wählen Sie Ihren Speichercontainer aus der Dropdownliste aus, nachdem Sie Storage Account (Speicherkonto) und Storage Key (Speicherschlüssel) eingegeben haben.

    The Spark Submission dialog box 1

  4. Wählen Sie das Symbol SparkJobRun aus, um Ihr Projekt an den ausgewählten Spark-Pool zu übermitteln. Auf der Registerkarte Remote Spark Job in Cluster (Remote-Spark-Auftrag auf Cluster) wird im unteren Bereich der Fortschritt der Auftragsausführung angezeigt. Sie können die Anwendung anhalten, indem Sie die rote Schaltfläche auswählen.

    Apache Spark Submission window

    The Spark Submission dialog box 2

Lokales Ausführen/Debuggen von Apache Spark-Anwendungen

Im Anschluss erfahren Sie, wie Sie das lokale Ausführen und Debuggen für Ihren Apache Spark-Auftrag einrichten.

Szenario 1: Lokales Ausführen

  1. Wählen Sie im Dialogfeld für die Ausführungs-/Debugkonfiguration das Plussymbol (+) aus. Wählen Sie anschließend die Option Apache Spark on Synapse (Apache Spark in Synapse) aus. Geben Sie zu speichernde Informationen für Name und Main class name (Name der main-Klasse) ein.

    Intellij Run debug configurations local run 1

    • Umgebungsvariablen und der Speicherort von „WinUtils.exe“ sind nur für Windows-Benutzer relevant.
    • Umgebungsvariablen: Die Systemumgebungsvariable kann automatisch erkannt werden, wenn Sie sie zuvor festgelegt haben. In diesem Fall muss sie nicht manuell hinzugefügt werden.
    • WinUtils.exe Location (Speicherort von „WinUtils.exe“): Zum Angeben des WinUtils-Speicherorts können Sie auf der rechten Seite das Ordnersymbol auswählen.
  2. Wählen Sie anschließend die Schaltfläche für die lokale Wiedergabe aus.

    Intellij Run debug configurations local run 2

  3. Nach Abschluss der lokalen Ausführung können Sie die Ausgabedatei unter data>default überprüfen, sofern das Skript eine Ausgabe enthält.

    Intellij Project local run result 1

Szenario 2: Lokales Debuggen

  1. Öffnen Sie das Skript LogQuery, und legen Sie Breakpoints fest.

  2. Wählen Sie das Symbol für Lokales Debuggen aus, um lokales Debuggen durchzuführen.

    Intellij Project local run result 2

Zugreifen auf und Verwalten von Synapse-Arbeitsbereichen

Im Azure-Explorer im Azure-Toolkit für IntelliJ können verschiedene Vorgänge ausgeführt werden. Navigieren Sie in der Menüleiste zu Ansicht>Toolfenster>Azure Explorer.

Starten des Arbeitsbereichs

  1. Navigieren Sie im Azure-Explorer zu Apache Spark on Synapse (Apache Spark in Synapse), und erweitern Sie den Knoten.

    IntelliJ IDEA Azure Explorer main view

  2. Klicken Sie mit der rechten Maustaste auf einen Arbeitsbereich, und wählen Sie Arbeitsbereich starten aus. Daraufhin wird eine Website geöffnet.

    Spark Job View Application details 1

    Spark Job View Application details 2

Spark-Konsole

Sie können „Spark Local Console(Scala)“ (Lokale Spark-Konsole (Scala)) oder „Spark Livy Interactive Session Console(Scala)“ (Spark-Livy-Konsole für interaktive Sitzungen) ausführen.

Lokale Spark-Konsole (Scala)

Vergewissern Sie sich, dass die Voraussetzung für „WINUTILS.EXE“ erfüllt wurde.

  1. Navigieren Sie in der Menüleiste zu Run (Ausführen)>Edit Configurations... (Konfigurationen bearbeiten…).

  2. Navigieren Sie im Fenster für die Ausführungs-/Debugkonfiguration im linken Bereich zu Apache Spark on Synapse>[Spark on Synapse] myApp (Apache Spark in Synapse > [Spark in Synapse] myApp).

  3. Klicken Sie im Hauptfenster auf die Registerkarte Locally Run (Lokal ausführen).

  4. Geben Sie die folgenden Werte an, und klicken Sie anschließend auf OK:

    Eigenschaft Wert
    Umgebungsvariablen Stellen Sie sicher, dass für HADOOP_HOME der richtige Wert festgelegt ist.
    „WINUTILS.exe location“ (Speicherort von „WINUTILS.exe“) Stellen Sie sicher, dass der richtige Pfad festgelegt ist.

    Local Console Set Configuration

  5. Navigieren Sie in „Project“ (Projekt) zu myApp>src>main>scala>myApp.

  6. Navigieren Sie über die Menüleiste zu Tools>Spark Console>Run Spark Local Console(Scala) (Tools > Spark-Konsole > Lokale Spark-Konsole (Scala) ausführen).

  7. Zwei Dialogfelder werden möglicherweise angezeigt, in denen Sie gefragt werden, ob Probleme mit Abhängigkeiten automatisch behoben werden sollen. Klicken Sie ggf. auf Auto Fix (Automatisch beheben).

    IntelliJ IDEA Spark Auto Fix dialog1

    IntelliJ IDEA Spark Auto Fix dialog2

  8. Die Konsole sollte in etwa wie auf dem folgenden Screenshot aussehen. Geben Sie im Konsolenfenster sc.appName ein, und drücken Sie STRG+EINGABETASTE. Das Ergebnis wird angezeigt. Sie können die lokale Konsole beenden, indem Sie die rote Schaltfläche auswählen.

    IntelliJ IDEA local console result

Spark-Konsole mit interaktiver Livy-Sitzung (Scala)

Wird nur für IntelliJ 2018.2 und 2018.3 unterstützt.

  1. Navigieren Sie in der Menüleiste zu Run (Ausführen)>Edit Configurations... (Konfigurationen bearbeiten…).

  2. Navigieren Sie im Fenster für die Ausführungs-/Debugkonfiguration im linken Bereich zu Apache Spark on synapse>[Spark on synapse] myApp (Apache Spark in Synapse > [Spark in Synapse] myApp).

  3. Klicken Sie im Hauptfenster auf die Registerkarte Remotely Run in Cluster (Remoteausführung in Cluster).

  4. Geben Sie die folgenden Werte an, und klicken Sie anschließend auf OK:

    Eigenschaft Wert
    „Main class name“ (Name der Hauptklasse) Wählen Sie den Namen der Hauptklasse aus.
    Spark-Pools Wählen Sie die Spark-Pools aus, in denen Sie Ihre Anwendung ausführen möchten.

    Interactive Console Set Configuration

  5. Navigieren Sie in „Project“ (Projekt) zu myApp>src>main>scala>myApp.

  6. Navigieren Sie über die Menüleiste zu Tools>Spark console>Run Spark Livy Interactive Session Console(Scala) (Tools > Spark-Konsole > Spark-Konsole mit interaktiver Livy-Sitzung (Scala) ausführen).

  7. Die Konsole sollte in etwa wie auf dem folgenden Screenshot aussehen. Geben Sie im Konsolenfenster sc.appName ein, und drücken Sie STRG+EINGABETASTE. Das Ergebnis wird angezeigt. Sie können die lokale Konsole beenden, indem Sie die rote Schaltfläche auswählen.

    IntelliJ IDEA Interactive Console Result

Senden der Auswahl an die Spark-Konsole

Sie können sich die Ergebnisse eines Skripts ansehen, indem Sie Code an die lokale Konsole oder an die Livy-Konsole für interaktive Sitzungen (Scala) senden. Markieren Sie dazu Code in der Scala-Datei, und klicken Sie mit der rechten Maustaste auf Send Selection To Spark Console (Auswahl an Spark-Konsole senden). Der ausgewählte Code wird an die Konsole gesendet und ausgeführt. Das Ergebnis wird nach dem Code in der Konsole angezeigt. Die Konsole überprüft, ob Fehler vorliegen.

Send Selection to Spark console

Nächste Schritte