Verwenden von Apache Zeppelin Notebooks mit Apache Spark-Cluster in Azure HDInsightUse Apache Zeppelin notebooks with Apache Spark cluster on Azure HDInsight

HDInsight Spark-Cluster enthalten Apache Zeppelin Notebooks, mit denen Sie Apache Spark-Aufträge ausführen können.HDInsight Spark clusters include Apache Zeppelin notebooks that you can use to run Apache Spark jobs. In diesem Artikel wird beschrieben, wie Sie das Zeppelin Notebook in einem HDInsight-Cluster verwenden.In this article, you learn how to use the Zeppelin notebook on an HDInsight cluster.

Voraussetzungen:Prerequisites:

Starten des Apache Zeppelin NotebooksLaunch an Apache Zeppelin notebook

  1. Wählen Sie im Spark-Cluster Übersicht unter Clusterdashboards die Option Zeppelin-Notebook.From the Spark cluster Overview, select Zeppelin notebook from Cluster dashboards. Geben Sie die Administratoranmeldeinformationen für den Cluster ein.Enter the admin credentials for the cluster.

    Hinweis

    Sie können auch das Zeppelin Notebook für Ihren Cluster aufrufen, indem Sie in Ihrem Browser die folgende URL öffnen.You may also reach the Zeppelin Notebook for your cluster by opening the following URL in your browser. Ersetzen Sie CLUSTERNAME durch den Namen Ihres Clusters:Replace CLUSTERNAME with the name of your cluster:

    https://CLUSTERNAME.azurehdinsight.net/zeppelin

  2. Erstellen Sie ein neues Notebook.Create a new notebook. Navigieren Sie im Headerbereich zu Notebook > Neue Notiz erstellen.From the header pane, navigate to Notebook > Create new note.

    Erstellen eines neuen Zeppelin NotebooksCreate a new Zeppelin notebook

    Geben Sie einen Namen für das Notebook ein, und wählen Sie anschließend Notiz erstellen.Enter a name for the notebook, then select Create Note.

  3. Stellen Sie sicher, dass im Header des Notebooks der Status „Verbunden“ angezeigt wird.Ensure the notebook header shows a connected status. Dies wird durch einen grünen Punkt in der oberen rechten Ecke angezeigt.It is denoted by a green dot in the top-right corner.

    Zeppelin Notebook-StatusZeppelin notebook status

  4. Laden Sie Beispieldaten in eine temporäre Tabelle.Load sample data into a temporary table. Wenn Sie einen Spark-Cluster in HDInsight erstellen, wird die Beispieldatei hvac.csv in das zugeordnete Speicherkonto unter \HdiSamples\SensorSampleData\hvac kopiert.When you create a Spark cluster in HDInsight, the sample data file, hvac.csv, is copied to the associated storage account under \HdiSamples\SensorSampleData\hvac.

    Fügen Sie in den leeren Absatz, der im neuen Notebook standardmäßig erstellt wird, den folgenden Codeausschnitt ein.In the empty paragraph that is created by default in the new notebook, paste the following snippet.

    %livy2.spark
    //The above magic instructs Zeppelin to use the Livy Scala interpreter
    
    // Create an RDD using the default Spark context, sc
    val hvacText = sc.textFile("wasbs:///HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv")
    
    // Define a schema
    case class Hvac(date: String, time: String, targettemp: Integer, actualtemp: Integer, buildingID: String)
    
    // Map the values in the .csv file to the schema
    val hvac = hvacText.map(s => s.split(",")).filter(s => s(0) != "Date").map(
        s => Hvac(s(0), 
                s(1),
                s(2).toInt,
                s(3).toInt,
                s(6)
        )
    ).toDF()
    
    // Register as a temporary table called "hvac"
    hvac.registerTempTable("hvac")
    

    Drücken Sie UMSCHALT+EINGABETASTE, oder klicken Sie auf die Schaltfläche Wiedergeben für den Absatz, um den Codeausschnitt auszuführen.Press SHIFT + ENTER or click the Play button for the paragraph to run the snippet. Der Status in der rechten Ecke des Absatzes sollte sich entsprechend ändern: BEREIT, AUSSTEHEND, WIRD AUSGEFÜHRT bis zu BEENDET.The status on the right-corner of the paragraph should progress from READY, PENDING, RUNNING to FINISHED. Die Ausgabe wird unten im Absatz angezeigt.The output shows up at the bottom of the same paragraph. Der Screenshot sieht folgendermaßen aus:The screenshot looks like the following:

    Erstellen einer temporären Tabelle auf der Grundlage von RohdatenCreate a temporary table from raw data

    Sie können auch einen Titel für jeden Absatz angeben.You can also provide a title to each paragraph. Wählen Sie in der rechten Ecke des Absatzes das Symbol Einstellungen (Zahnrad) und dann Titel anzeigen.From the right-hand corner of the paragraph, select the Settings icon (sprocket), and then select Show title.

    Hinweis

    Der %spark2-Interpreter wird in Zeppelin-Notebooks bei keiner HDInsight-Version unterstützt, und der %sh-Interpreter wird ab HDInsight 4.0 nicht unterstützt.%spark2 interpreter is not supported in Zeppelin notebooks across all HDInsight versions, and %sh interpreter will not be supported from HDInsight 4.0 onwards.

  5. Sie können jetzt Spark SQL-Anweisungen für die Tabelle hvac ausführen.You can now run Spark SQL statements on the hvac table. Fügen Sie die folgende Abfrage in einen neuen Absatz ein.Paste the following query in a new paragraph. Mit der Abfrage werden die Gebäude-ID und der Unterschied zwischen den Ziel- und Ist-Temperaturen für jedes Gebäude an einem bestimmten Datum abgerufen.The query retrieves the building ID and the difference between the target and actual temperatures for each building on a given date. Drücken Sie UMSCHALT+EINGABETASTE.Press SHIFT + ENTER.

    %sql
    select buildingID, (targettemp - actualtemp) as temp_diff, date from hvac where date = "6/1/13" 
    

    Mit der %sql-Anweisung am Anfang wird das Notebook angewiesen, den Livy Scala-Interpreter zu verwenden.The %sql statement at the beginning tells the notebook to use the Livy Scala interpreter.

  6. Wählen Sie das Symbol Balkendiagramm aus, um die Anzeige zu ändern.Select the Bar Chart icon to change the display. Unter der Option Einstellungen, die nach dem Auswählen von Balkendiagramm angezeigt wird, können Sie Schlüssel und Werte auswählen.settings, which appears after you have selected Bar Chart, allows you to choose Keys, and Values. Im folgenden Screenshot ist die Ausgabe dargestellt.The following screenshot shows the output.

    Ausführen einer Spark-SQL-Anweisung mit dem NotebookRun a Spark SQL statement using the notebook

  7. Sie können auch Spark-SQL-Anweisungen ausführen, indem Sie die Variablen in der Abfrage verwenden.You can also run Spark SQL statements using variables in the query. Der nächste Codeausschnitt zeigt, wie Sie eine Variable (Temp) in der Abfrage mit den möglichen Werten definieren, die für die Abfrage verwendet werden sollen.The next snippet shows how to define a variable, Temp, in the query with the possible values you want to query with. Beim ersten Ausführen der Abfrage wird automatisch eine Dropdownliste mit den Werten aufgefüllt, die Sie für die Variable angegeben haben.When you first run the query, a drop-down is automatically populated with the values you specified for the variable.

    %sql  
    select buildingID, date, targettemp, (targettemp - actualtemp) as temp_diff from hvac where targettemp > "${Temp = 65,65|75|85}"
    

    Fügen Sie diesen Codeausschnitt in einen neuen Absatz ein, und drücken Sie UMSCHALT+EINGABETASTE.Paste this snippet in a new paragraph and press SHIFT + ENTER. Wählen Sie anschließend in der Dropdownliste Temp den Wert 65 aus.Then select 65 from the Temp drop-down ist.

  8. Wählen Sie das Symbol Balkendiagramm aus, um die Anzeige zu ändern.Select the Bar Chart icon to change the display. Wählen Sie anschließend Einstellungen, und nehmen Sie die folgenden Änderungen vor:Then select settings and make the following changes:

    • Gruppen: Fügen Sie targettemp hinzu.Groups: Add targettemp.

    • Werte: 1.Values: 1. Entfernen Sie date.Remove date. 2.2. Fügen Sie temp_diff hinzu.Add temp_diff. 3.3. Ändern Sie den Aggregator von SUM in AVG.Change the aggregator from SUM to AVG.

      Im folgenden Screenshot ist die Ausgabe dargestellt.The following screenshot shows the output.

      Ausführen einer Spark-SQL-Anweisung mit dem NotebookRun a Spark SQL statement using the notebook

  9. Starten Sie den Livy-Interpreter neu, um die Anwendung zu beenden.Restart the Livy interpreter to exit the application. Öffnen Sie zu diesem Zweck die Einstellungen des Interpreters, indem Sie oben rechts den Namen des angemeldeten Benutzers und dann Interpreter auswählen.To do so, open interpreter settings by selecting the logged in user name from the top-right corner, and then select Interpreter.

    Starten des InterpretersLaunch interpreter

  10. Scrollen Sie zu livy, und wählen Sie dann restart.Scroll to livy, and then select restart. Wählen Sie in der Eingabeaufforderung die Option OK.Select OK at the prompt.

    Neustarten des Livy-InterpretersRestart the Livy intepreter

Wie verwende ich externe Pakete mit dem Notebook?How do I use external packages with the notebook?

Sie können das Zeppelin Notebook in einem Apache Spark-Cluster in HDInsight konfigurieren, um externe, von der Community bereitgestellte Pakete zu verwenden, die nicht im Lieferumfang des Clusters enthalten sind.You can configure the Zeppelin notebook in Apache Spark cluster on HDInsight to use external, community-contributed packages that are not included out-of-the-box in the cluster. Sie können das Maven Repository nach einer vollständigen Liste der verfügbaren Pakete durchsuchen.You can search the Maven repository for the complete list of packages that are available. Sie können die Liste der verfügbaren Pakete auch aus anderen Quellen abrufen.You can also get a list of available packages from other sources. Beispielsweise steht eine vollständige Liste der von der Community bereitgestellten Pakete auf Spark-Paketezur Verfügung.For example, a complete list of community-contributed packages is available at Spark Packages.

In diesem Artikel wird beschrieben, wie Sie das Paket spark-csv mit Jupyter Notebook verwenden.In this article, you will see how to use the spark-csv package with the Jupyter notebook.

  1. Öffnen Sie die Einstellungen des Interpreters.Open interpreter settings. Wählen Sie in der Ecke oben rechts den Namen des angemeldeten Benutzers und dann Interpreter aus.From the top-right corner, select the logged in user name, then select Interpreter.

    Starten des InterpretersLaunch interpreter

  2. Scrollen Sie zu livy, und wählen Sie dann edit.Scroll to livy, then select edit.

    Ändern der Interpreter-EinstellungenChange interpreter settings

  3. Fügen Sie einen neuen Schlüssel mit dem Namen livy.spark.jars.packages hinzu, und legen Sie seinen Wert im Format group:id:version fest.Add a new key called livy.spark.jars.packages, and set its value in the format group:id:version. Wenn Sie das Paket spark-csv verwenden möchten, müssen Sie den Wert des Schlüssels auf com.databricks:spark-csv_2.10:1.4.0 festlegen.So, if you want to use the spark-csv package, you must set the value of the key to com.databricks:spark-csv_2.10:1.4.0.

    Ändern der Interpreter-EinstellungenChange interpreter settings

    Wählen Sie Speichern, und starten Sie dann den Livy-Interpreter neu.Select Save and then restart the Livy interpreter.

  4. Hier ist angegeben, wie Sie zum Wert des oben eingegebenen Schlüssels gelangen, falls dies für Sie interessant ist.If you want to understand how to arrive at the value of the key entered above, here's how.

    a.a. Suchen Sie das Paket im Maven-Repository.Locate the package in the Maven Repository. In diesem Tutorial haben wir spark-csv verwendet.For this tutorial, we used spark-csv.

    b.b. Sammeln Sie im Repository die Werte für GroupId, ArtifactId und Version.From the repository, gather the values for GroupId, ArtifactId, and Version.

    Verwenden externer Pakete mit Jupyter NotebooksUse external packages with Jupyter notebook

    c.c. Verketten Sie die drei Werte, getrennt durch einen Doppelpunkt ( : ).Concatenate the three values, separated by a colon (:).

     com.databricks:spark-csv_2.10:1.4.0
    

Wo werden Zeppelin Notebooks gespeichert?Where are the Zeppelin notebooks saved?

Die Zeppelin Notebooks werden in den Clusterhauptknoten gespeichert.The Zeppelin notebooks are saved to the cluster headnodes. Wenn Sie den Cluster löschen, werden also auch die Notebooks gelöscht.So, if you delete the cluster, the notebooks will be deleted as well. Falls Sie Ihre Notebooks zur späteren Verwendung auf anderen Clustern beibehalten möchten, müssen Sie sie exportieren, nachdem Sie die Ausführung der Aufträge abgeschlossen haben.If you want to preserve your notebooks for later use on other clusters, you must export them after you have finished running the jobs. Wählen Sie zum Exportieren eines Notebooks das Symbol Exportieren. Dies ist in der Abbildung unten dargestellt.To export a notebook, select the Export icon as shown in the image below.

Herunterladen des NotebooksDownload notebook

Das Notebook wird als JSON-Datei in Ihrem Downloadverzeichnis gespeichert.This saves the notebook as a JSON file in your download location.

Livy-SitzungsverwaltungLivy session management

Wenn Sie den ersten Codeabsatz in Ihrem Zeppelin-Notebook ausführen, wird in Ihrem HDInsight Spark-Cluster eine neue Livy-Sitzung erstellt.When you run the first code paragraph in your Zeppelin notebook, a new Livy session is created in your HDInsight Spark cluster. Diese Sitzung kann für alle Zeppelin Notebooks gemeinsam verwendet werden, die Sie erstellen.This session is shared across all Zeppelin notebooks that you subsequently create. Falls die Livy-Sitzung aus irgendeinem Grund beendet wird (Clusterneustart usw.), können Sie keine Aufträge über das Zeppelin Notebook ausführen.If for some reason the Livy session is killed (cluster reboot, etc.), you will not be able to run jobs from the Zeppelin notebook.

In diesem Fall müssen Sie die folgenden Schritte ausführen, bevor Sie mit dem Ausführen von Aufträgen über ein Zeppelin Notebook beginnen können.In such a case, you must perform the following steps before you can start running jobs from a Zeppelin notebook.

  1. Starten Sie den Livy-Interpreter über das Zeppelin Notebook neu.Restart the Livy interpreter from the Zeppelin notebook. Öffnen Sie zu diesem Zweck die Einstellungen des Interpreters, indem Sie oben rechts den Namen des angemeldeten Benutzers und dann Interpreter auswählen.To do so, open interpreter settings by selecting the logged in user name from the top-right corner, then select Interpreter.

    Starten des InterpretersLaunch interpreter

  2. Scrollen Sie zu livy, und wählen Sie dann restart.Scroll to livy, then select restart.

    Neustarten des Livy-InterpretersRestart the Livy intepreter

  3. Führen Sie eine Codezelle über ein vorhandenes Zeppelin Notebook aus.Run a code cell from an existing Zeppelin notebook. Im HDInsight-Cluster wird eine neue Livy-Sitzung erstellt.This creates a new Livy session in the HDInsight cluster.

Weitere InformationenSee also

SzenarienScenarios

Erstellen und Ausführen von AnwendungenCreate and run applications

Tools und ErweiterungenTools and extensions

Verwalten von RessourcenManage resources