Kernel für Jupyter Notebook in Apache Spark-Clustern in Azure HDInsightKernels for Jupyter notebook on Apache Spark clusters in Azure HDInsight

HDInsight Spark-Cluster bieten Kernels, die Sie mit dem Jupyter Notebook in Apache Spark zum Testen Ihrer Anwendungen verwenden können.HDInsight Spark clusters provide kernels that you can use with the Jupyter notebook on Apache Spark for testing your applications. Ein Kernel ist ein Programm, das ausgeführt wird und Ihren Code interpretiert.A kernel is a program that runs and interprets your code. Folgende drei Kernel sind verfügbar:The three kernels are:

  • PySpark: für in Python 2 geschriebene Anwendungen.PySpark - for applications written in Python2.
  • PySpark3: für in Python 3 geschriebene Anwendungen.PySpark3 - for applications written in Python3.
  • Spark: für in Scala geschriebene Anwendungen.Spark - for applications written in Scala.

In diesem Artikel erfahren Sie, wie Sie diese Kernels verwenden und welche Vorteile sie bieten.In this article, you learn how to use these kernels and the benefits of using them.

VoraussetzungenPrerequisites

Einen Apache Spark-Cluster unter HDInsightAn Apache Spark cluster in HDInsight. Eine Anleitung finden Sie unter Erstellen von Apache Spark-Clustern in Azure HDInsight.For instructions, see Create Apache Spark clusters in Azure HDInsight.

Erstellen eines Jupyter-Notebooks unter Spark HDInsightCreate a Jupyter notebook on Spark HDInsight

  1. Wählen Sie im Azure-Portal Ihren Spark-Cluster aus.From the Azure portal, select your Spark cluster. Anweisungen dazu finden Sie unter Auflisten und Anzeigen von Clustern.See List and show clusters for the instructions. Die Übersicht wird geöffnet.The Overview view opens.

  2. Wählen Sie in der Übersicht im Feld Clusterdashboards die Option Jupyter-Notebook aus.From the Overview view, in the Cluster dashboards box, select Jupyter notebook. Geben Sie die Administratoranmeldeinformationen für den Cluster ein, wenn Sie dazu aufgefordert werden.If prompted, enter the admin credentials for the cluster.

    Jupyter-Notebook unter SparkJupyter notebook on Spark

    Hinweis

    Sie können das Jupyter-Notebook im Spark-Cluster auch aufrufen, indem Sie in Ihrem Browser die folgende URL öffnen.You may also reach the Jupyter notebook on Spark 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/jupyter

  3. Wählen Sie Neu und anschließend entweder Pyspark, PySpark3 oder Spark aus, um ein Notebook zu erstellen.Select New, and then select either Pyspark, PySpark3, or Spark to create a notebook. Der Spark-Kernel ist für Scala-Anwendungen vorgesehen, der PySpark-Kernel für Python2-Anwendungen und der PySpark3-Kernel für Python3-Anwendungen.Use the Spark kernel for Scala applications, PySpark kernel for Python2 applications, and PySpark3 kernel for Python3 applications.

    Kernel für Jupyter-Notebooks unter SparkKernels for Jupyter notebook on Spark

  4. Mit dem gewählten Kernel wird ein Notebook geöffnet.A notebook opens with the kernel you selected.

Vorteile der KernelverwendungBenefits of using the kernels

Hier sind einige Vorteile der Verwendung der neuen Kernel mit einem Jupyter-Notebook in Spark HDInsight-Clustern.Here are a few benefits of using the new kernels with Jupyter notebook on Spark HDInsight clusters.

  • Voreingestellte KontextePreset contexts. Bei Verwendung der PySpark-, PySpark3- oder Spark-Kernel müssen Sie die Spark- oder Hive-Kontexte nicht mehr explizit festlegen, um mit Ihren Anwendungen arbeiten zu können.With PySpark, PySpark3, or the Spark kernels, you do not need to set the Spark or Hive contexts explicitly before you start working with your applications. Diese sind standardmäßig verfügbar.These are available by default. Diese Kontexte sind:These contexts are:

    • sc (Spark-Kontext)sc - for Spark context

    • sqlContext – für Hive-KontextsqlContext - for Hive context

      Sie müssen also keine Anweisungen wie die folgenden ausführen, um die Kontexte festzulegen:So, you don't have to run statements like the following to set the contexts:

       sc = SparkContext('yarn-client')
       sqlContext = HiveContext(sc)
      

      Stattdessen können Sie in Ihrer Anwendung direkt die vordefinierten Kontexte verwenden.Instead, you can directly use the preset contexts in your application.

  • Zellen-MagicsCell magics. Der PySpark-Kernel bietet einige vordefinierte „Magics“, spezielle Befehle, die Sie mit %% (z.B. %%MAGIC <args>) aufrufen können.The PySpark kernel provides some predefined "magics", which are special commands that you can call with %% (for example, %%MAGIC <args>). Der Magic-Befehl muss das erste Wort in einer Codezelle sein und ermöglicht mehrere Inhaltszeilen.The magic command must be the first word in a code cell and allow for multiple lines of content. Das Magic-Wort sollte das erste Wort in der Zelle sein.The magic word should be the first word in the cell. Beliebige Hinzufügungen vor dem Magic, auch Kommentare, verursachen einen Fehler.Adding anything before the magic, even comments, causes an error. Weitere Informationen zu Magics finden Sie hier.For more information on magics, see here.

    In der folgenden Tabelle sind die verschiedenen über den Kernel verfügbaren Magics aufgeführt.The following table lists the different magics available through the kernels.

    MagicMagic BeispielExample BESCHREIBUNGDescription
    helphelp %%help Generiert eine Tabelle mit allen verfügbaren Magics mit Beispiel und Beschreibung.Generates a table of all the available magics with example and description
    infoinfo %%info Gibt Sitzungsinformationen für den aktuellen Livy-Endpunkt heraus.Outputs session information for the current Livy endpoint
    KONFIGURIERENconfigure %%configure -f
    {"executorMemory": "1000M",{"executorMemory": "1000M",
    "executorCores": 4}"executorCores": 4}
    Konfiguriert die Parameter für das Erstellen einer neuen Sitzung.Configures the parameters for creating a session. Das Force-Flag (-f) ist obligatorisch, wenn bereits eine Sitzung erstellt wurde, um sicherzustellen, dass die Sitzung gelöscht und neu erstellt wird.The force flag (-f) is mandatory if a session has already been created, which ensures that the session is dropped and recreated. Unter „Request Body“ in „POST /sessions“ für Livy finden Sie eine Liste der gültigen Parameter.Look at Livy's POST /sessions Request Body for a list of valid parameters. Parameter müssen als JSON-Zeichenfolge übergeben werden und in der nächsten Zeile nach dem Magic-Befehl stehen, wie in der Beispielspalte gezeigt.Parameters must be passed in as a JSON string and must be on the next line after the magic, as shown in the example column.
    sqlsql %%sql -o <variable name>
    SHOW TABLES
    Führt eine Hive-Abfrage für sqlContext aus.Executes a Hive query against the sqlContext. Wenn der Parameter -o übergeben wird, wird das Ergebnis der Abfrage im %%local-Python-Kontext als Pandas -Dataframe beibehalten.If the -o parameter is passed, the result of the query is persisted in the %%local Python context as a Pandas dataframe.
    locallocal %%local
    a=1
    Der gesamte Code in den folgenden Zeilen wird lokal ausgeführt.All the code in subsequent lines is executed locally. Der Code muss gültiger Python2-Code sein, unabhängig vom verwendeten Kernel.Code must be valid Python2 code even irrespective of the kernel you are using. Sogar wenn Sie beim Erstellen des Notebooks PySpark3- oder Spark-Kernels gewählt haben und die %%local-Magic in einer Zelle verwenden, darf diese Zelle nur gültigen Python2-Code enthalten.So, even if you selected PySpark3 or Spark kernels while creating the notebook, if you use the %%local magic in a cell, that cell must only have valid Python2 code.
    logslogs %%logs Gibt die Protokolle für die aktuelle Livy-Sitzung aus.Outputs the logs for the current Livy session.
    deletedelete %%delete -f -s <session number> Löscht eine bestimmte Sitzung des aktuellen Livy-Endpunkts.Deletes a specific session of the current Livy endpoint. Die Sitzung, die für den Kernel selbst initiiert wird, können Sie nicht löschen.You cannot delete the session that is initiated for the kernel itself.
    cleanupcleanup %%cleanup -f Löscht alle Sitzungen für den aktuellen Livy-Endpunkt, einschließlich dieser Notebook-Sitzung.Deletes all the sessions for the current Livy endpoint, including this notebook's session. Das Force-Flag „-f“ ist obligatorischThe force flag -f is mandatory.

    Hinweis

    Zusätzlich zu den Magics, die durch den PySpark-Kernel hinzugefügt werden, können Sie auch die integrierten IPython-Magics verwenden, einschließlich %%sh.In addition to the magics added by the PySpark kernel, you can also use the built-in IPython magics, including %%sh. Sie können das Magic %%sh verwenden, um Skripts und Codeblöcke auf dem Clusterhauptknoten auszuführen.You can use the %%sh magic to run scripts and block of code on the cluster headnode.

  • Automatische Visualisierung.Auto visualization. Der Pyspark-Kernel visualisiert automatisch die Ausgabe von Hive- und SQL-Abfragen.The Pyspark kernel automatically visualizes the output of Hive and SQL queries. Sie können zwischen verschiedenen Arten von Visualisierungen wählen, inklusive Tabelle, Kreis-, Linie-, Flächen- und Balkendiagramm.You can choose between several different types of visualizations including Table, Pie, Line, Area, Bar.

Mit %%sql-Magic unterstützte ParameterParameters supported with the %%sql magic

Die %%sql-Magic unterstützt verschiedene Parameter, mit denen Sie steuern können, welche Art der Ausgabe Sie erhalten, wenn Sie Abfragen ausführen.The %%sql magic supports different parameters that you can use to control the kind of output that you receive when you run queries. In der folgenden Tabelle werden die Ausgaben aufgeführt.The following table lists the output.

ParameterParameter BeispielExample BESCHREIBUNGDescription
-o-o -o <VARIABLE NAME> Verwenden Sie diesen Parameter, um das Ergebnis der Abfrage im %%local-Python-Kontext als Pandas -Dataframe beizubehalten.Use this parameter to persist the result of the query, in the %%local Python context, as a Pandas dataframe. Der Name der Datenrahmenvariablen ist der Variablenname, den Sie angeben.The name of the dataframe variable is the variable name you specify.
-q-q -q Verwenden Sie diese Option, um die Visualisierungen für die Zelle auszuschalten.Use this to turn off visualizations for the cell. Wenn Sie den Inhalt einer Zelle nicht automatisch visualisieren, sondern einfach als Dataframe erfassen möchten, verwenden Sie -q -o <VARIABLE>.If you don't want to autovisualize the content of a cell and just want to capture it as a dataframe, then use -q -o <VARIABLE>. Wenn Sie Visualisierungen deaktivieren möchten, ohne die Ergebnisse zu erfassen (z.B. zum Ausführen einer SQL-Abfrage wie etwa einer CREATE TABLE-Anweisung), verwenden Sie einfach -q ohne Angabe eines -o-Arguments.If you want to turn off visualizations without capturing the results (for example, for running a SQL query, like a CREATE TABLE statement), use -q without specifying a -o argument.
-m-m -m <METHOD> Dabei ist METHOD entweder take oder sample (der Standardwert ist take).Where METHOD is either take or sample (default is take). Wenn die Methode takeist, wählt der Kernel Elemente von der obersten Position des Resultdatasets gemäß MAXROWS (weiter unten in dieser Tabelle beschrieben).If the method is take, the kernel picks elements from the top of the result data set specified by MAXROWS (described later in this table). Wenn die Methode sample ist, wählt der Kernel nach dem Zufallsprinzip Elemente des Datasets gemäß des -r-Parameters, der in dieser Tabelle beschrieben wird.If the method is sample, the kernel randomly samples elements of the data set according to -r parameter, described next in this table.
-r-r -r <FRACTION> Hier ist FRACTION eine Gleitkommazahl zwischen 0,0 und 1,0.Here FRACTION is a floating-point number between 0.0 and 1.0. Wenn die Methode für die SQL-Abfrage sample ist, dann wählt der Kernel nach dem Zufallsprinzip den angegebenen Bruchteil der Elemente des Resultsets aus.If the sample method for the SQL query is sample, then the kernel randomly samples the specified fraction of the elements of the result set for you. Wenn Sie z.B. eine SQL-Abfrage mit den Argumenten -m sample -r 0.01 ausführen, wird 1% der Ergebniszeilen nach dem Zufallsprinzip entnommen.For example, if you run a SQL query with the arguments -m sample -r 0.01, then 1% of the result rows are randomly sampled.
-n-n -n <MAXROWS> MAXROWS ist ein Ganzzahlwert.MAXROWS is an integer value. Der Kernel schränkt die Anzahl der Ausgabezeilen auf MAXROWS ein.The kernel limits the number of output rows to MAXROWS. Wenn MAXROWS eine negative Zahl ist, z.B. -1, dann ist die Anzahl der Zeilen im Resultset nicht begrenzt.If MAXROWS is a negative number such as -1, then the number of rows in the result set is not limited.

Beispiel:Example:

%%sql -q -m sample -r 0.1 -n 500 -o query2
SELECT * FROM hivesampletable

Die obige Anweisung führt Folgendes aus:The statement above does the following:

  • Wählt alle Datensätze aus hivesampletableaus.Selects all records from hivesampletable.
  • Da wir „-q“ verwenden, wird die automatische Visualisierung deaktiviert.Because we use -q, it turns off autovisualization.
  • Da wir -m sample -r 0.1 -n 500 verwenden, werden nach dem Zufallsprinzip 10% der Zeilen in „hivesampletable“ ausgewählt, und die Größe des Resultsets wird auf 500 Zeilen beschränkt.Because we use -m sample -r 0.1 -n 500 it randomly samples 10% of the rows in the hivesampletable and limits the size of the result set to 500 rows.
  • Da wir -o query2 verwendet haben, wird schließlich auch die Ausgabe in einem Dataframe namens query2gespeichert.Finally, because we used -o query2 it also saves the output into a dataframe called query2.

Überlegungen bei der Verwendung der neuen KernelConsiderations while using the new kernels

Unabhängig vom verwendeten Kernel werden von ausgeführten Notebooks immer Clusterressourcen beansprucht.Whichever kernel you use, leaving the notebooks running consumes the cluster resources. Da die Kontexte für diese Kernels voreingestellt sind, werden die Kontexte durch ein einfaches Beenden der Notebooks nicht ebenfalls beendet, sondern beanspruchen weiterhin Clusterressourcen.With these kernels, because the contexts are preset, simply exiting the notebooks does not kill the context and hence the cluster resources continue to be in use. Daher empfiehlt sich die Verwendung der Option zum Schließen und Anhalten aus dem Menü Datei des Notebooks. Dadurch wird die Beendigung des Kontexts erzwungen und das Notebook beendet.A good practice is to use the Close and Halt option from the notebook's File menu when you are finished using the notebook, which kills the context and then exits the notebook.

Wo werden die Notebooks gespeichert?Where are the notebooks stored?

Wenn Ihr Cluster Azure Storage als Standardspeicherkonto verwendet, werden Jupyter Notebooks unter dem Ordner /HdiNotebooks im Speicherkonto gespeichert.If your cluster uses Azure Storage as the default storage account, Jupyter notebooks are saved to storage account under the /HdiNotebooks folder. Der Zugriff auf Notebooks, Textdateien und Ordner, die Sie in Jupyter erstellen, erfolgt über das Speicherkonto.Notebooks, text files, and folders that you create from within Jupyter are accessible from the storage account. Wenn Sie z.B. Jupyter verwenden, um einen Ordner myfolder und ein Notebook myfolder/mynotebook.ipynb zu erstellen, können Sie im Speicherkonto unter /HdiNotebooks/myfolder/mynotebook.ipynb auf dieses Notebook zugreifen.For example, if you use Jupyter to create a folder myfolder and a notebook myfolder/mynotebook.ipynb, you can access that notebook at /HdiNotebooks/myfolder/mynotebook.ipynb within the storage account. Das gilt auch umgekehrt, d.h. wenn Sie ein Notebook direkt in Ihr Speicherkonto unter /HdiNotebooks/mynotebook1.ipynb hochladen, ist das Notebook auch von Jupyter aus sichtbar.The reverse is also true, that is, if you upload a notebook directly to your storage account at /HdiNotebooks/mynotebook1.ipynb, the notebook is visible from Jupyter as well. Die Notebooks verbleiben im Speicherkonto, auch nachdem der Cluster gelöscht wurde.Notebooks remain in the storage account even after the cluster is deleted.

Hinweis

HDInsight-Cluster mit Azure Data Lake Storage als Standardspeicher speichern Notebooks nicht im zugehörigen Speicher.HDInsight clusters with Azure Data Lake Storage as the default storage do not store notebooks in associated storage.

Der Vorgang des Speicherns von Notebooks im Speicherkonto ist mit Apache Hadoop HDFS kompatibel.The way notebooks are saved to the storage account is compatible with Apache Hadoop HDFS. Wenn Sie also eine SSH-Verbindung mit dem Cluster herstellen, können Sie Dateiverwaltungsbefehle wie im folgenden Codeausschnitt verwenden:So, if you SSH into the cluster you can use file management commands as shown in the following snippet:

hdfs dfs -ls /HdiNotebooks                            # List everything at the root directory – everything in this directory is visible to Jupyter from the home page
hdfs dfs –copyToLocal /HdiNotebooks                   # Download the contents of the HdiNotebooks folder
hdfs dfs –copyFromLocal example.ipynb /HdiNotebooks   # Upload a notebook example.ipynb to the root folder so it’s visible from Jupyter

Unabhängig davon, ob der Cluster Azure Storage oder Azure Data Lake Storage als das Standardspeicherkonto verwendet, werden die Notebooks auch auf dem Clusterhauptknoten unter /var/lib/jupyter gespeichert.Irrespective of whether the cluster uses Azure Storage or Azure Data Lake Storage as the default storage account, the notebooks are also saved on the cluster headnode at /var/lib/jupyter.

Unterstützte BrowserSupported browser

Jupyter Notebooks in Spark HDInsight-Clustern werden nur von Google Chrome unterstützt.Jupyter notebooks on Spark HDInsight clusters are supported only on Google Chrome.

FeedbackFeedback

Die neuen Kernels befinden sich in der Entwicklungsphase und werden mit der Zeit ausreifen.The new kernels are in evolving stage and will mature over time. Im Zuge dieser Entwicklung ändern sich unter Umständen auch APIs.This could also mean that APIs could change as these kernels mature. Wir freuen uns über Ihr Feedback zur Verwendung der neuen Kernel.We would appreciate any feedback that you have while using these new kernels. Dies hilft uns bei der Gestaltung der endgültigen Kernelversion.This is useful in shaping the final release of these kernels. Kommentare/Feedback können Sie im Feedbackabschnitt am Ende dieses Artikels hinterlassen.You can leave your comments/feedback under the Feedback section at the bottom of this article.

Weitere InformationenSee also

SzenarienScenarios

Erstellen und Ausführen von AnwendungenCreate and run applications

Tools und ErweiterungenTools and extensions

Verwalten von RessourcenManage resources