Erstellen, Entwickeln und Verwalten von Synapse-Notebooks in Azure Synapse Analytics

Ein Synapse-Notebook ist eine Weboberfläche zum Erstellen von Dateien, die Live-Code, Visualisierungen und beschreibenden Text enthalten. Notebooks sind ein guter Ausgangspunkt, um Ideen zu überprüfen und schnelle Experimente zu verwenden, um Erkenntnisse aus Ihren Daten zu gewinnen. Notebooks werden auch häufig bei der Datenvorbereitung, Datenvisualisierung, Machine Learning und andere Big Data-Szenarien verwendet.

Mit einem Synapse-Notebook können Sie:

  • Ohne Einrichtungsaufwand sofort loslegen.
  • Daten mit integrierten Sicherheitsfeatures auf Unternehmensniveau schützen.
  • Daten in Rohformaten (CSV, TXT, JSON usw.), verarbeiteten Dateiformaten (Parquet, Delta Lake, ORC usw.) und tabellarischen SQL-Datendateien gegen Spark und SQL analysieren.
  • Produktiv sein mit erweiterten Funktionen zur Dokumenterstellung und integrierter Datenvisualisierung.

In diesem Artikel wird beschrieben, wie Notebooks in Synapse Studio verwendet werden.

Erstellen eines Notebooks

Ein Notebook kann auf zwei Arten erstellt werden. Sie können ein neues Notebook erstellen oder ein vorhandenes Notebook aus dem Objekt-Explorer in einen Synapse-Arbeitsbereich importieren. Synapse-Notebooks erkennen Standard Jupyter Notebook IPYNB-Dateien.

Ein Screenshot, der das Erstellen eines neuen Notebooks oder Importieren eines Notebooks zeigt

Entwickeln von Notebooks

Notebooks bestehen aus Zellen, bei denen es sich um einzelne Code- oder Textblöcke handelt, die unabhängig oder als Gruppe ausgeführt werden können.

Wir bieten umfangreiche Vorgänge zum Entwickeln von Notebooks:

Hinweis

In den Notebooks wird automatisch eine SparkSession für Sie erstellt und in einer Variable namens spark gespeichert. Es gibt auch eine Variable für SparkContext, die sc heißt. Benutzer*innen können direkt auf diese Variablen zugreifen und sollten ihre Werte nicht ändern.

Hinzufügen einer Zelle

Es gibt mehrere Möglichkeiten, um Ihrem Notebook eine neue Zelle hinzuzufügen.

  1. Zeigen Sie mit dem Mauszeiger auf den Bereich zwischen zwei Zellen, und wählen Sie Code oder Markdown aus. Ein Screenshot, der „Eine Zelle mit der Schaltfläche ‚Zelle‘ hinzufügen“ im Azure-Notebook zeigt

  2. Verwenden Sie aznb-Tastenkombinationen im Befehlsmodus. Drücken Sie A, um eine Zelle oberhalb der aktuellen Zelle einzufügen. Drücken Sie B, um eine Zelle unterhalb der aktuellen Zelle einzufügen.


Festlegen einer primären Sprache

Synapse-Notebooks unterstützen vier Apache Spark-Sprachen:

  • PySpark (Python)
  • Spark (Scala)
  • Spark SQL
  • .NET Spark (C#)
  • SparkR (R)

Sie können die primäre Sprache für neu hinzugefügte Zellen in der Dropdownliste in der oberen Befehlsleiste festlegen.

Ein Screenshot der die „Standard-Synapse-Sprache“ zeigt

Verwenden mehrerer Sprachen

Sie können in einem Notebook mehrere Sprachen verwenden, indem Sie den richtigen Magic-Befehl für die Sprache am Anfang einer Zelle angeben. In der folgenden Tabelle werden die Magic-Befehle zum Wechseln von Zellensprachen aufgelistet.

Magic-Befehl Sprache BESCHREIBUNG
%%pyspark Python Eine Python-Abfrage im Spark-Kontext ausführen.
%%spark Scala Eine Scala-Abfrage im Spark-Kontext ausführen.
%%sql SparkSQL Eine SparkSQL-Abfrage im Spark-Kontext ausführen.
%%csharp .NET für Spark (C#) Führen Sie eine Abfrage vom Typ .NET für Spark (C#) für Spark-Kontext aus.
%%sparkr R Eine R-Abfrage im Spark-Kontext ausführen.

Die folgende Abbildung zeigt ein Beispiel dafür, wie Sie eine PySpark-Abfrage mit dem Magic-Befehl %%pyspark schreiben können oder eine SparkSQL-Abfrage mit dem Magic-Befehl %%sql in einem Spark (Scala) -Notebook. Beachten Sie, dass die primäre Sprache für das Notebook auf PySpark festgelegt ist.

Ein Screenshot der die „Magic-Befehle“ von Synapse Spark zeigt

Verwenden von temporären Tabellen zum Verweisen auf Daten in verschiedenen Sprachen

Sie können in einem Synapse-Notebook nicht direkt auf Daten oder Variablen in verschiedenen Sprachen verweisen. In Spark kann auf eine temporäre Tabelle in verschiedenen Sprachen verwiesen werden. Im Folgenden finden Sie ein Beispiel, wie Sie einen Scala-Datenrahmen in PySpark und SparkSQL mittels einer temporären Spark-Tabelle als Problemumgehung lesen können.

  1. Lesen Sie in Zelle 1 einen Datenrahmen von einem SQL-Poolconnector mithilfe von Scala, und erstellen Sie eine temporäre Tabelle.

    %%spark
    val scalaDataFrame = spark.read.sqlanalytics("mySQLPoolDatabase.dbo.mySQLPoolTable")
    scalaDataFrame.createOrReplaceTempView( "mydataframetable" )
    
  2. In Zelle 2 fragen Sie die Daten mithilfe von Spark SQL ab.

    %%sql
    SELECT * FROM mydataframetable
    
  3. In Zelle 3 verwenden Sie die Daten in PySpark.

    %%pyspark
    myNewPythonDataFrame = spark.sql("SELECT * FROM mydataframetable")
    

IDE-artiges IntelliSense

Synapse-Notebooks sind in den Monaco-Editor integriert, um den Zellen-Editor mit IDE-style IntelliSense auszustatten. Syntaxhervorhebung, Fehlermarkierungen und automatische Codevervollständigungen helfen Ihnen dabei, Code zu schreiben und Probleme schneller zu erkennen.

Die IntelliSense-Funktionen befinden sich in unterschiedlichen Stadien der Entwicklung für verschiedene Sprachen. In der folgenden Tabelle können Sie sehen, was unterstützt wird.

Languages Syntaxhervorhebung Syntaxfehlermarkierungen Codevervollständigung für Syntax Codevervollständigung für Variablen Codevervollständigung für Systemfunktionen Codevervollständigung für Benutzerfunktionen Intelligenter Einzug Codefaltung
PySpark (Python) Ja Ja Ja Ja Ja Ja Ja Ja
Spark (Scala) Ja Ja Ja Ja Ja Ja - Ja
SparkSQL Ja Ja Ja Ja Ja - - -
.NET für Spark (C#) Ja Ja Ja Ja Ja Ja Ja Ja

Hinweis

Eine aktive Spark-Sitzung ist erforderlich, um von der Codevervollständigung für Variablen, der Codevervollständigung für Systemfunktionen, der Codevervollständigung für Benutzerfunktionen für .NET für Spark (C#) zu profitieren.

Codeausschnitte

Synapse-Notebooks stellen Codeausschnitte bereit, die die Eingabe häufig verwendeter Codemuster erleichtern, wie z. B. das Konfigurieren Ihrer Spark-Sitzung, das Lesen von Daten als Spark DataFrame oder das Zeichnen von Diagrammen mit matplotlib usw.

Codeausschnitte werden in Tastaturkurzbefehlen im IDE Stil in IntelliSense gemeinsam mit anderen Vorschlägen angezeigt. Der Inhalt der Codeausschnitte richtet sich nach der Codezellensprache. Sie können die verfügbaren Ausschnitte anzeigen, indem Sie Snippet oder beliebige Schlüsselwörter eingeben, die im Titel für den Ausschnitt im Codezellen-Editor angezeigt werden. Wenn Sie beispielsweise read eingeben, wird eine Liste der Codeausschnitte zum Lesen von Daten aus verschiedenen Datenquellen angezeigt.

Animierte GIF-Datei mit Synapse-Codeausschnitten

Textzelle mit Symbolleisten-Schaltflächen formatieren

Sie können die Formatschaltflächen auf der Textzellen-Symbolleiste verwenden, um allgemeine Markdown-Aktionen durchzuführen. Darunter fällt das Formatieren von Text als fett oder kursiv, Absätze/Kopfzeilen mittels einer Dropdownliste und das Einfügen von Code, von unsortierten Listen, von sortierten Listen, Hyperlinks und Bildern aus URLs.

Ein Screenshot, der die „Synapse-Textzellensymbolleiste“ zeigt


Zellenvorgang rückgängig machen/wiederholen

Wählen Sie die Schaltfläche Rückgängig / Wiederholen oder drücken Sie Z / Umschalt+Y um die letzten Zellenvorgänge aufzuheben. Sie können jetzt bis zu 10 der letzten zurückliegenden Zellenaktionen rückgängig machen/wiederherstellen.

Ein Screenshot, der die „Synapse-Rückgängig-Zellen“ in Azure Notebooks zeigt

Unterstützte Rückgängig-Zellenvorgänge:

  • Zelle einfügen/löschen: Sie können die Löschvorgänge rückgängig machen, indem Sie Rückgängig auswählen. Der Textinhalt wird zusammen mit der Zelle beibehalten.
  • Eine Zelle neu anordnen.
  • Umschalten von Parametern.
  • Konvertieren zwischen der Codezelle und der Markdown-Zelle.

Hinweis

Die Textvorgänge in der Zelle und die Codezellenkommentare sind nicht rückgängig zu machen. Sie können jetzt bis zu 10 der letzten zurückliegenden Zellenaktionen rückgängig machen/wiederherstellen.


Kommentieren von Codezellen

  1. Wählen Sie auf der Notebook-Symbolleiste die Schaltfläche Kommentare, um den Bereich Kommentare zu öffnen.

    Ein Screenshot, der die Schaltfläche für „Synapse-Kommentare“ zeigt

  2. Wählen Sie Code in der Codezelle aus, klicken Sie im Bereich Kommentare auf Neu, fügen Sie Kommentare hinzu, und klicken Sie dann auf die Schaltfläche Kommentar posten, um zu speichern.

    Ein Screenshot des neuen Synapse-Kommentars

  3. Sie können einen Kommentar bearbeiten, einen Thread auflösenoder einen Thread löschen ausführen, indem Sie neben Ihrem Kommentar auf die Schaltfläche Mehr klicken.

    Ein Screenshot, der „Kommentar bearbeiten“ in Synapse zeigt


Verschieben einer Zelle

Klicken Sie auf die linke Seite einer Zelle, und ziehen Sie sie an die gewünschte Position. Animiertes GIF von einer Zellverschiebung in Synapse


Löschen einer Zelle

Wählen Sie zum Löschen einer Zelle die Schaltfläche „Löschen“ auf der rechten Seite der Zelle.

Sie können auch Tastenkombinationen im Befehlsmodus verwenden. Drücken Sie UMSCHALT+D, um die aktuelle Zelle zu löschen.

Ein Screenshot, der „Eine Zelle löschen“ in Azure-Notebook zeigt


Reduzieren einer Zelleneingabe

Wählen Sie auf der Zellensymbolleiste die Auslassungspunkte für Weitere Befehle (...) und dann Eingabe ausblenden aus, um die Eingabe der aktuellen Zelle zu reduzieren. Zum Erweitern wählen Sie Eingabe anzeigen aus, während die Zelle reduziert ist.

Ein Animiertes GIF von „Reduzieren einer Zelleneingabe“ in Azure Notebook


Reduzieren einer Zellenausgabe

Wählen Sie auf der Zellensymbolleiste die Auslassungspunkte für Weitere Befehle (...) und dann Ausgabe ausblenden aus, um die Ausgabe der aktuellen Zelle zu reduzieren. Zum Erweitern wählen Sie Ausgabe anzeigen aus, während die Zelle reduziert ist.

Ein Animiertes GIF von „Reduzieren einer Zellenausgabe“ in Azure Notebook


Notebook-Gliederung

Das Feld „Gliederung (Inhaltsverzeichnis)“ stellt den ersten Markdownheader einer beliebigen Markdownzelle in einem Randleistenfenster für die schnelle Navigation dar. Die Gliederungsrandleiste ist in der Größe veränderbar und reduzierbar, um den Bildschirm optimal anzupassen. Sie können die Schaltfläche Gliederung auf der Notebook-Befehlsleiste auswählen, um die Randleiste zu öffnen oder auszublenden.

Ein Screenshot, der „Ein Umriss von Azure-Notebook


Ausführen von Notebooks

Sie können die Codezellen in Ihrem Notebook einzeln oder alle gleichzeitig ausführen. Status und Fortschritt jeder Zelle werden im Notebook dargestellt.

Ausführen einer Zelle

Es gibt mehrere Methoden, um den Code in einer Zelle auszuführen.

  1. Zeigen Sie mit dem Mauszeiger auf die Zelle, die Sie ausführen möchten, und wählen Sie die Schaltfläche Zelle ausführen aus, oder drücken Sie STRG+EINGABE.

    Ein Screenshot, der „Ausführen einer Zelle 1“ zeigt

  2. Verwenden Sie Tastenkombinationen im Befehlsmodus. Drücken Sie UMSCHALT+EINGABE, um die aktuelle Zelle auszuführen und die Zelle darunter auszuwählen. Drücken Sie ALT+EINGABE, um die aktuelle Zelle auszuführen und darunter eine neue Zelle einzufügen.


Ausführen aller Zellen

Wählen Sie die Schaltfläche Alle ausführen aus, um alle Zellen im aktuellen Notebook nacheinander auszuführen.

Ein Screenshot, der „Ausführen aller Zellen“ zeigt

Ausführen aller darüber- oder darunterliegenden Zellen

Erweitern Sie die Dropdownliste über die Schaltfläche Alle ausführen, und wählen Sie dann Zellen oberhalb ausführen aus, um alle Zellen oberhalb der aktuellen Zelle nacheinander auszuführen. Wählen Sie Zellen unterhalb ausführen aus, um alle Zellen unterhalb der aktuellen nacheinander auszuführen.

Ein Screenshot, der „Ausführen von Zellen, die sich oberhalb oder unterhalb befinden“ in Azure Notebook zeigt


Abbrechen aller ausgeführten Zellen

Wählen Sie die Schaltfläche Alle abbrechen aus, um die ausgeführten oder in der Warteschlange wartenden Zellen abzubrechen. Ein Screenshot, der „Abbrechen aller Zellen“ im Azure-Notebook zeigt


Notebookverweis

Sie können den Magic-Befehl %run <notebook path> verwenden, um im Kontext des aktuellen Notebooks auf ein anderes Notebook zu verweisen. Alle im Referenznotebook definierten Variablen sind im aktuellen Notebook verfügbar. Der Magic-Befehl %run unterstützt geschachtelte Aufrufe, aber keine rekursiven Aufrufe. Es wird eine Ausnahme angezeigt, wenn die Anweisungstiefe größer als fünf ist.

Beispiel: %run /<path>/Notebook1 { "parameterInt": 1, "parameterFloat": 2.5, "parameterBool": true, "parameterString": "abc" }.

Notebookverweise funktionieren sowohl im interaktiven Modus als auch in der Synapse-Pipeline.

Hinweis

  • Der %run-Befehl unterstützt derzeit nur das Übergeben eines absoluten Pfads oder Notebooknamens nur als Parameter, ein relativer Pfad wird nicht unterstützt.
  • Der %run-Befehl unterstützt derzeit nur bis zu 4 Parameterwerttypen: int, float, bool, string. Der Variablenersetzungsvorgang wird nicht unterstützt.
  • Die Notebooks, auf die verwiesen wird, müssen veröffentlicht werden. Sofern nicht die Option Auf unveröffentlichtes Notebook verweisen aktiviert ist, müssen Sie die Notebooks veröffentlichen, auf die verwiesen werden soll. Synapse Studio erkennt die nicht veröffentlichten Notebooks aus dem Git-Repository nicht.
  • Referenzierte Notebooks unterstützen keine Anweisung, deren die Tiefe größer als fünf ist.

Variablen-Explorer

Synapse-Notebooks verfügen über einen integrierten Variablen-Explorer, in dem Sie die Liste der Variablennamen, -typen, -längen und -werte in der aktuellen Spark-Sitzung für PySpark-Zellen (Python) anzeigen können. Weitere Variablen werden automatisch angezeigt, wenn sie in den Codezellen definiert werden. Durch Klicken auf die einzelnen Spaltenüberschriften werden die Variablen in der Tabelle sortiert.

Sie können die Schaltfläche Variablen in der Notebook-Befehlsleiste auswählen, um den Variablen-Explorer zu öffnen oder auszublenden.

Ein Screenshot, der den „Variablen-Explorer“ in Azure Notebook zeigt

Hinweis

Der Variablen-Explorer unterstützt nur Python.


Zellenstatusindikator

Unterhalb der Zelle wird ein schrittweiser Zellenausführungsstatus angezeigt, damit Sie den aktuellen Fortschritt verfolgen können. Nachdem die Ausführung der Zelle abgeschlossen wurde, wird eine Ausführungszusammenfassung mit Gesamtdauer und Endzeit angezeigt, die zur späteren Bezugnahme dort auch aufbewahrt wird.

Ein Screenshot, der den „Zellenstatus“ zeigt

Spark-Statusanzeige

Ein Synapse-Notebook basiert ausschließlich auf Spark. Codezellen werden im serverlosen Apache Spark-Pool remote ausgeführt. Eine Spark-Auftragsstatusanzeige wird mit einem Statusbalken in Echtzeit angezeigt, um Ihnen den Status der Auftragsausführung zu verdeutlichen. Anhand der Anzahl der Aufgaben pro Auftrag oder Phase können Sie die parallele Ebene Ihres Spark-Auftrags identifizieren. Sie können außerdem die Spark-Benutzeroberfläche eines spezifischen Auftrags (oder einer Phase) erweitern, indem Sie den Link im Auftragsnamen (oder Phasennamen) auswählen.

Ein Screenshot, der eine „Spark-Statusanzeige“ zeigt

Spark-Sitzungskonfiguration

Sie können in Sitzung konfigurieren die Timeoutdauer sowie die Anzahl und Größe der Executors angeben, die für die aktuelle Spark-Sitzung gelten sollen. Sie müssen die Spark-Sitzung neu starten, damit die Konfigurationsänderungen wirksam werden. Alle zwischengespeicherten Notebook-Variablen werden gelöscht.

Sie können auch eine Konfiguration aus der Apache Spark-Konfiguration erstellen oder eine vorhandene Konfiguration auswählen. Einzelheiten finden Sie in der Apache Spark-Konfigurationsverwaltung.

Ein Screenshot, der die „Sitzungsverwaltung“ zeigt

Magic-Befehl für Spark-Sitzungskonfiguration

Sie können auch Spark-Sitzungseinstellungen über einen %%configure-Magic-Befehl angeben. Die Spark-Sitzung muss neu gestartet werden, damit die Einstellungen wirksam werden. Wir empfehlen Ihnen, %%configure am Anfang Ihres Notebooks auszuführen. Hier ist ein Beispiel. Die vollständige Liste der gültigen Parameter finden Sie unter https://github.com/cloudera/livy#request-body.

%%configure
{
    //You can get a list of valid parameters to config the session from https://github.com/cloudera/livy#request-body.
    "driverMemory":"28g", // Recommended values: ["28g", "56g", "112g", "224g", "400g", "472g"]
    "driverCores":4, // Recommended values: [4, 8, 16, 32, 64, 80]
    "executorMemory":"28g",
    "executorCores":4, 
    "jars":["abfs[s]://<file_system>@<account_name>.dfs.core.windows.net/<path>/myjar.jar","wasb[s]://<containername>@<accountname>.blob.core.windows.net/<path>/myjar1.jar"],
    "conf":{
    //Example of standard spark property, to find more available properties please visit:https://spark.apache.org/docs/latest/configuration.html#application-properties.
        "spark.driver.maxResultSize":"10g",
    //Example of customized property, you can specify count of lines that Spark SQL returns by configuring "livy.rsc.sql.num-rows".
        "livy.rsc.sql.num-rows":"3000" 
    }
}

Hinweis

  • Es wird empfohlen, „DriverMemory“ und „ExecutorMemory“ in %%configure auf denselben Wert zu setzen. Dies gilt auch für „driverCores“ und „executorCores“.
  • Sie können „%%configure“ in Synapse-Pipelines verwenden, aber wenn es nicht in der ersten Codezelle festgelegt wird, schlägt die Pipelineausführung fehl, weil die Sitzung nicht neu gestartet werden kann.
  • Der in „mssparkutils.notebook.run“ verwendete %%configure-Befehl wird ignoriert, aber in „%run notebook“ weiterhin ausgeführt.
  • Die Spark-Standardkonfigurationseigenschaften müssen im „conf“-Text verwendet werden. Wir unterstützen keine Verweise auf oberster Ebene für die Spark-Konfigurationseigenschaften.
  • Einige spezielle Spark-Eigenschaften wie „spark.driver.cores“, „spark.executor.cores“, „spark.driver.memory“, „spark.executor.memory“, „spark.executor.instances“ werden im „conf“-Text nicht wirksam.

Parametrisierte Sitzungskonfiguration aus Pipeline

Mit der parametrisierten Sitzungskonfiguration können Sie den Wert im „%%configure“-Magic-Befehl durch Parameter der Pipelineausführung (Notebook-Aktivität) ersetzen. Beim Vorbereiten der „%%configure“-Codezelle können Sie Standardwerte (im folgenden Beispiel auch konfigurierbar, 4 und „2000“) mit einem Objekt wie dem folgenden überschreiben:

{
      "activityParameterName": "paramterNameInPipelineNotebookActivity",
      "defaultValue": "defaultValueIfNoParamterFromPipelineNotebookActivity"
} 
%%configure  

{ 
    "driverCores": 
    { 
        "activityParameterName": "driverCoresFromNotebookActivity", 
        "defaultValue": 4 
    }, 
    "conf": 
    { 
        "livy.rsc.sql.num-rows": 
        { 
            "activityParameterName": "rows", 
            "defaultValue": "2000" 
        } 
    } 
} 

Notebooks verwenden den Standardwert, wenn sie direkt im interaktiven Modus ausgeführt werden oder die Notebook-Aktivität der Pipeline keinen Parameter angibt, der „activityParameterName“ entspricht.

Während des Pipelineausführungsmodus können Sie Notebook-Aktivitätseinstellungen der Pipeline wie folgt konfigurieren: Screenshot der parametrisierten Sitzungskonfiguration

Wenn Sie die Sitzungskonfiguration ändern möchten, sollte der Name der Notebook-Aktivitätsparameter der Pipeline mit dem Namen von „activityParameterName“ im Notebook identisch sein. Wenn Sie diese Pipeline ausführen, wird in diesem Beispiel „driverCores“ in „%%configure“ durch 8 ersetzt, und „livy.rsc.sql.num-rows“ wird durch 4000 ersetzt.

Hinweis

Wenn die Ausführung der Pipeline aufgrund der Verwendung dieses neuen „%%configure“-Magic-Befehls fehlgeschlagen ist, können Sie weitere Fehlerinformationen überprüfen, indem Sie die „%%configure“-Magic-Zelle im interaktiven Modus des Notebooks ausführen.

Einfügen von Daten in ein Notebook

Sie können Daten aus Azure Blob Storage, Azure Data Lake Store Gen 2 und dem SQL-Pool laden, wie in den folgenden Codebeispielen gezeigt.

Lesen einer CSV-Datei aus Azure Data Lake Store Gen2 als Spark-Datenrahmen

from pyspark.sql import SparkSession
from pyspark.sql.types import *
account_name = "Your account name"
container_name = "Your container name"
relative_path = "Your path"
adls_path = 'abfss://%s@%s.dfs.core.windows.net/%s' % (container_name, account_name, relative_path)

df1 = spark.read.option('header', 'true') \
                .option('delimiter', ',') \
                .csv(adls_path + '/Testfile.csv')

Lesen einer CSV-Datei aus Azure Blob Storage als Spark-Datenrahmen


from pyspark.sql import SparkSession

# Azure storage access info
blob_account_name = 'Your account name' # replace with your blob name
blob_container_name = 'Your container name' # replace with your container name
blob_relative_path = 'Your path' # replace with your relative folder path
linked_service_name = 'Your linked service name' # replace with your linked service name

blob_sas_token = mssparkutils.credentials.getConnectionStringOrCreds(linked_service_name)

# Allow SPARK to access from Blob remotely

wasb_path = 'wasbs://%s@%s.blob.core.windows.net/%s' % (blob_container_name, blob_account_name, blob_relative_path)

spark.conf.set('fs.azure.sas.%s.%s.blob.core.windows.net' % (blob_container_name, blob_account_name), blob_sas_token)
print('Remote blob path: ' + wasb_path)

df = spark.read.option("header", "true") \
            .option("delimiter","|") \
            .schema(schema) \
            .csv(wasbs_path)

Lesen von Daten aus einem primären Speicherkonto

Sie können auf Daten im primären Speicherkonto direkt zugreifen. Es besteht keine Notwendigkeit, die geheimen Schlüssel bereitzustellen. Klicken Sie im Daten-Explorer mit der rechten Maustaste auf eine Datei, und wählen Sie Neues Notebook aus, um ein neues Notebook mit einem automatisch generierten Datenextraktor anzuzeigen.

Ein Screenshot, der von „Daten aus Zelle“ zeigt

IPython-Widgets

Widgets sind ereignisbehaftete Python-Objekte, die eine Darstellung im Browser besitzen – häufig als Steuerelement wie ein Schieberegler, ein Textfeld usw. IPython-Widgets funktionieren nur in der Python-Umgebung und werden in anderen Sprachen (z. B. Scala, SQL, C#) nicht unterstützt.

So verwenden Sie das IPython-Widget

  1. Sie müssen zuerst das Modul ipywidgets importieren, um das Jupyter Widget-Framework zu verwenden.

    import ipywidgets as widgets
    
  2. Sie können die Funktion display der obersten Ebene verwenden, um ein Widget zu rendern, oder einen Ausdruck vom Typ widget in der letzten Zeile der Codezelle belassen.

    slider = widgets.IntSlider()
    display(slider)
    
    slider = widgets.IntSlider()
    slider
    
  3. Führen Sie die Zelle aus. Das Widget wird dann im Ausgabebereich angezeigt.

    Ein Screenshot, der den „Schiebereglers für IPython-Widgets“ zeigt

  4. Sie können mehrere display()-Aufrufe verwenden, um dieselbe Widgetinstanz mehrmals zu rendern, wobei diese aber miteinander synchronisiert bleiben.

    slider = widgets.IntSlider()
    display(slider)
    display(slider)
    

    Ein Screenshot, der die „Schieberegler für IPython-Widgets“ zeigt

  5. Um zwei Widgets unabhängig voneinander zu rendern, erstellen Sie zwei Widgetinstanzen:

    slider1 = widgets.IntSlider()
    slider2 = widgets.IntSlider()
    display(slider1)
    display(slider2)
    

Unterstützte Widgets

Widgettyp Widgets
Numerische Widgets IntSlider, FloatSlider, FloatLogSlider, IntRangeSlider, FloatRangeSlider, IntProgress, FloatProgress, BoundedIntText, BoundedFloatText, IntText, FloatText
Boolesche Widgets ToggleButton, Checkbox, Valid
Auswahlwidgets Dropdown, RadioButtons, Select, SelectionSlider, SelectionRangeSlider, ToggleButtons, SelectMultiple
Zeichenfolgenwidgets Text, Text area, Combobox, Password, Label, HTML, HTML Math, Image, Button
Wiedergabewidgets (Animation) Date picker, Color picker, Controller (Datumsauswahl, Farbauswahl, Controller)
Container-/Layoutwidgets Box, HBox, VBox, GridBox, Accordion, Tabs, Stacked

Bekannte Einschränkungen

  1. Die folgenden Widgets werden noch nicht unterstützt. Sie können aber wie folgt eine Problemumgehung befolgen:

    Funktionalität Problemumgehung
    Output-Widget Sie können stattdessen die print()-Funktion verwenden, um Text in stdout zu schreiben.
    widgets.jslink() Sie können die widgets.link()-Funktion verwenden, um zwei ähnliche Widgets zu verknüpfen.
    FileUpload-Widget Noch nicht unterstützt.
  2. Im Unterschied zur IPython-Funktion display unterstützt die von Synapse bereitgestellte globale display-Funktion die Anzeige mehrerer Widgets in einem Aufruf (d. h. display(a, b)) nicht.

  3. Wenn Sie ein Notebook schließen, das IPython-Widget enthält, können Sie es erst anzeigen oder damit interagieren, wenn Sie die entsprechende Zelle erneut ausführen.


Speichern von Notebooks

Sie können ein einzelnes Notebook oder alle Notebooks in Ihrem Arbeitsbereich speichern.

  1. Um an einem einzelnen Notebook vorgenommene Änderungen zu speichern, wählen Sie auf der Notebook-Befehlsleiste die SchaltflächeVeröffentlichen aus.

    Ein Screenshot, der die „Veröffentlichungseinstellungen“ zeigt

  2. Um alle Notebooks in Ihrem Arbeitsbereich zu speichern, wählen Sie die Schaltfläche Alle veröffentlichen auf der Befehlsleiste des Arbeitsbereichs aus.

    Ein Screenshot, der die Einstellung „Alle veröffentlichen“ zeigt

In den Notebook-Eigenschaften können Sie konfigurieren, ob die Zellenausgabe beim Speichern eingeschlossen werden soll.

Ein Screenshot, der die“ Notebookeigenschaften“ zeigt

Magic-Befehle

Sie können bekannte Jupyter-Magic-Befehle in Synapse-Notebooks verwenden. In der folgenden Liste finden Sie die derzeit verfügbaren Magic-Befehle. Teilen Sie uns Ihre Anwendungsfälle auf GitHub mit, damit wir weitere Magic-Befehle erstellen können, um Ihre Anforderungen zu erfüllen.

Hinweis

Nur die folgenden Magic-Befehle werden in einer Synapse-Pipeline unterstützt: %%pyspark, %%spark, %%csharp, %%sql.

Verfügbare Zeilen-Magics: %lsmagic, %time, %timeit, %history, %run, %load

Verfügbare Zeilen-Magics: %%time, %%timeit, %%capture, %%writefile, %%sql, %%pyspark, %%spark, %%csharp, %%html, %%configure


Auf unveröffentlichtes Notizbuch verweisen

Das Verweisen auf ein nicht veröffentlichtes Notebook ist hilfreich, wenn Sie „lokal“ debuggen möchten. Wenn Sie dieses Feature aktivieren, ruft die Notebookausführung den aktuellen Inhalt im Webcache ab. Wenn Sie eine Zelle mit einer Anweisung zum Verweisen auf Notebooks ausführen, verweisen Sie auf die vorhandenen Notebooks im aktuellen Notebookbrowser anstatt auf gespeicherte Versionen im Cluster. Das bedeutet, dass andere Notebooks sofort auf die Änderungen im Notebook-Editor verweisen können, ohne dass sie veröffentlicht (Livemodus) oder committet (Git-Modus) werden müssen. Wenn Sie diesen Ansatz verwenden, können Sie eine Beeinträchtigung allgemeiner Bibliotheken während des Entwicklungs- oder Debugprozesses ganz einfach vermeiden.

Sie können „Auf unveröffentlichtes Notebook verweisen“ im Bereich „Eigenschaften“ aktivieren:

Screenshot der Notebook-Referenz

Vergleiche unterschiedlicher Fälle finden Sie in der folgenden Tabelle:

Beachten Sie, dass %run und mssparkutils.notebook.run hier dasselbe Verhalten haben. Wir verwenden %run hier als Beispiel.

Fall Disable Aktivieren
Livemodus
– Nb1 (veröffentlicht)
%run Nb1
Ausführen der veröffentlichten Version von Nb1 Ausführen der veröffentlichten Version von Nb1
– Nb1 (Neu)
%run Nb1
Fehler Ausführen der neuen Nb1
– Nb1 (zuvor veröffentlicht, bearbeitet)
%run Nb1
Ausführen der veröffentlichten Version von Nb1 Ausführen der bearbeiteten Version von Nb1
Git-Modus
– Nb1 (veröffentlicht)
%run Nb1
Ausführen der veröffentlichten Version von Nb1 Ausführen der veröffentlichten Version von Nb1
– Nb1 (Neu)
%run Nb1
Fehler Ausführen der neuen Nb1
– Nb1 (Nicht veröffentlicht, committet)
%run Nb1
Fehler Ausführen der committeten Nb1
– Nb1 (zuvor veröffentlicht, committet)
%run Nb1
Ausführen der veröffentlichten Version von Nb1 Ausführen der committeten Version von Nb1
– Nb1 (zuvor veröffentlicht, neu im Current Branch)
%run Nb1
Ausführen der veröffentlichten Version von Nb1 Ausführen der neuen Nb1
– Nb1 (nicht veröffentlicht, zuvor committet, bearbeitet)
%run Nb1
Fehler Ausführen der bearbeiteten Version von Nb1
– Nb1 (zuvor veröffentlicht und committet, bearbeitet)
%run Nb1
Ausführen der veröffentlichten Version von Nb1 Ausführen der bearbeiteten Version von Nb1

Zusammenfassung

  • Wenn deaktiviert, immer die veröffentlichte Version ausführen.
  • Wenn aktiviert, ist die Priorität: bearbeitet/neu > committet > veröffentlicht.

Verwalten der aktiven Sitzung

Sie können Ihre Notebooksitzungen nun bequem wiederverwenden, ohne neue Sitzungen starten zu müssen. Synapse Notebook unterstützt jetzt die Verwaltung Ihrer aktiven Sitzungen in der Liste Sitzungen verwalten. Sie können dort alle Sitzungen im aktuellen Arbeitsbereich anzeigen, die von Ihnen über das Notebook gestartet wurden.

Screenshot der Notebook-Verwaltungssitzungen

In der Liste Aktive Sitzungen werden die Sitzungsinformationen und das zugehörige Notebook angezeigt, das derzeit an die Sitzung angefügt ist. Sie können von hier aus die Verbindung mit dem Notebook trennen, die Sitzung beenden und Überwachungsinformationen anzeigen. Darüber hinaus können Sie Ihr ausgewähltes Notebook problemlos mit einer aktiven Sitzung in der Liste verbinden, die von einem anderen Notebook gestartet wurde. Die Sitzung wird vom vorherigen Notebook getrennt (wenn sie sich nicht im Leerlauf befindet) und dann an das aktuelle Notebook angefügt.

Screenshot der Notebook-Sitzungsliste

Python-Protokollierung in Notebook

Informationen zum Anzeigen von Python-Protokollen und Festlegen verschiedener Protokollebenen und -formate können Sie dem folgenden Beispielcode entnehmen:

import logging

# Customize the logging format for all loggers
FORMAT = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
formatter = logging.Formatter(fmt=FORMAT)
for handler in logging.getLogger().handlers:
    handler.setFormatter(formatter)

# Customize log level for all loggers
logging.getLogger().setLevel(logging.INFO)

# Customize the log level for a specific logger
customizedLogger = logging.getLogger('customized')
customizedLogger.setLevel(logging.WARNING)

# logger that use the default global log level
defaultLogger = logging.getLogger('default')
defaultLogger.debug("default debug message")
defaultLogger.info("default info message")
defaultLogger.warning("default warning message")
defaultLogger.error("default error message")
defaultLogger.critical("default critical message")

# logger that use the customized log level
customizedLogger.debug("customized debug message")
customizedLogger.info("customized info message")
customizedLogger.warning("customized warning message")
customizedLogger.error("customized error message")
customizedLogger.critical("customized critical message")

Integrieren eines Notebooks

Hinzufügen eines Notebooks zu einer Pipeline

Wählen Sie in der oberen rechten Ecke Zur Pipeline hinzufügen aus, um ein Notebook zu einer vorhandenen Pipeline hinzuzufügen oder eine neue Pipeline zu erstellen.

Ein Screenshot der das „ Hinzufügen eines Notebooks zur Pipeline“ zeigt

Festlegen einer Parameterzelle

Um Ihr Notebook zu parametrisieren, wählen Sie die Auslassungspunkte (...) aus, um auf der Zellensymbolleiste auf Weitere Befehle zuzugreifen. Klicken Sie dann auf Parameterzelle umschalten, um die Zelle als Parameterzelle festzulegen.

Ein Screenshot, der das „Umschalten von Parametern“ in Azure Notebook zeigt


Azure Data Factory sucht nach der Parameterzelle und behandelt diese Zelle als Standard für die Parameter, die zur Ausführungszeit übermittelt werden. Die Ausführungs-Engine fügt eine neue Zelle mit Eingabeparametern unterhalb der Parameterzelle hinzu, um die Standardwerte zu überschreiben.

Zuweisen von Parameterwerten über eine Pipeline

Sobald Sie ein Notebook mit Parametern erstellt haben, können Sie dieses über eine Pipeline mit der Synapse Analytics-Aktivität ausführen. Nachdem Sie die Aktivität zu Ihrem Pipelinecanvas hinzugefügt haben, können Sie die Parameterwerte auf der Registerkarte Einstellungen im Abschnitt Basisparameter festlegen.

Ein Screenshot, der das „Zuweisen eines Parameters“ zeigt

Beim Zuweisen von Parameterwerten können Sie die Pipelineausdruckssprache oder Systemvariablen verwenden.

Tastenkombinationen

Ähnlich wie Jupyter Notebooks verfügen Synapse-Notebooks über eine modale Benutzeroberfläche. Mit der Tastatur werden unterschiedliche Aktionen ausgeführt, je nachdem, in welchem Modus sich die Notebook-Zelle befindet. Synapse-Notebooks unterstützen die folgenden zwei Modi für eine bestimmte Codezelle: Befehlsmodus und Bearbeitungsmodus.

  1. Eine Zelle befindet sich im Befehlsmodus, wenn Sie kein Textcursor zur Eingabe auffordert. Wenn sich eine Zelle im Befehlsmodus befindet, können Sie das Notebook als Ganzes bearbeiten, aber keine Eingaben in einzelne Zellen vornehmen. Sie wechseln in den Befehlsmodus, indem Sie ESC drücken oder mit der Maus außerhalb des Editor-Bereichs einer Zelle klicken.

    Ein Screenshot, der den „Befehlsmodus“ zeigt

  2. Der Bearbeitungsmodus wird durch einen Textcursor angezeigt, der Sie zur Eingabe im Editor-Bereich auffordert. Wenn sich eine Zelle im Bearbeitungsmodus befindet, können Sie etwas in die Zelle eingeben. Sie wechseln in den Bearbeitungsmodus, indem Sie Enter drücken oder mit der Maus auf den Editor-Bereich einer Zelle klicken.

    Ein Screenshot der den „Bearbeitungsmodus“ zeigt

Tastenkombinationen im Befehlsmodus

Aktion Tastenkombinationen für Synapse-Notebooks
Aktuelle Zelle ausführen und die darunter auswählen UMSCHALT+EINGABE
Aktuelle Zelle ausführen und darunter einfügen ALT+EINGABE
Aktuelle Zelle ausführen STRG+EINGABE
Zelle darüber auswählen Nach oben
Zelle darunter auswählen Nach unten
Vorherige Zelle auswählen K
Nächste Zelle auswählen J
Zelle oberhalb einfügen Ein
Zelle unterhalb einfügen B
Ausgewählte Zellen löschen UMSCHALT+D
In den Bearbeitungsmodus wechseln EINGABETASTE

Tastenkombinationen im Bearbeitungsmodus

Mithilfe der folgenden Tastenkombinationen können Sie in Synapse-Notebooks leichter navigieren und Code ausführen, während sie sich im Bearbeitungsmodus befinden.

Action Tastenkombinationen für Synapse-Notebooks
Cursor nach oben verschieben Nach oben
Cursor nach unten verschieben Nach unten
Rückgängig STRG+Z
Wiederholen STRG+Y
Auskommentieren/Auskommentierung aufheben STRG+/
Wort davor löschen STRG+RÜCKTASTE
Wort danach löschen STRG+DELETE
Zum Anfang der Zelle wechseln STRG+POS1
Zum Ende der Zelle wechseln STRG+ENDE
Ein Wort nach links wechseln STRG+NACH-LINKS
Ein Wort nach rechts wechseln STRG+NACH-RECHTS
Alle auswählen STRG+A
Einziehen STRG+]
Einzug entfernen STRG+[
In den Befehlsmodus wechseln Esc

Nächste Schritte