Erstellen, Entwickeln und Unterhalten von Synapse-Notebooks

Ein Notebook in Azure Synapse Analytics (ein Synapse-Notebook) ist eine Webschnittstelle, die Sie zum Erstellen von Dateien verwenden, die Livecode, 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 für Datenvorbereitung, Datenvisualisierung, Machine Learning und andere Big Data-Szenarien verwendet.

Mit einem Synapse-Notebook können Sie:

  • Ohne Einrichtungsaufwand sofort loslegen.
  • Schützen Sie Daten mit integrierten Features für Unternehmenssicherheit.
  • Analysieren Sie Daten in Rohformaten (z. B. CSV, TXT und JSON), verarbeiteten Sie Dateiformate (z. B. Parkett, Delta Lake und ORC) und tabellarische SQL-Datendateien gegen Spark und SQL.
  • 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

Sie können ein neues Notebook erstellen oder ein vorhandenes Notebook aus Objekt-Explorer in einen Synapse-Arbeitsbereich importieren. Wählen Sie Entwickeln aus, klicken Sie mit der rechten Maustaste auf Notebooks, und wählen Sie dann Neues Notebook oder Importieren aus. Synapse-Notebooks erkennen Standard Jupyter Notebook IPYNB-Dateien.

Screenshot der Auswahlmöglichkeiten zum Erstellen oder Importieren eines Notebooks.

Entwickeln von Notebooks

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

In den folgenden Abschnitten werden die Vorgänge für die Entwicklung von Notebooks beschrieben:

Hinweis

In den Notebooks wird automatisch eine SparkSession-Instanz für Sie erstellt und in einer Variable mit dem Namen spark gespeichert. Es gibt auch eine Variable für SparkContext mit dem Namen sc. Benutzer können direkt auf diese Variablen zugreifen, sollten aber die Werte dieser Variablen nicht ändern.

Hinzufügen einer Zelle

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

  • Zeigen Sie mit dem Mauszeiger auf den Bereich zwischen zwei Zellen, und wählen Sie Code oder Markdown aus.

    Screenshot der Schaltflächen „Code“ und „Markdown“ in einem Synapse-Notebook.

  • Verwenden Sie Tastenkombinationen im Befehlsmodus. Wählen Sie die A-Taste aus, um eine Zelle oberhalb der aktiven Zelle einzufügen. Wählen Sie die B-Taste aus, um eine Zelle unterhalb der aktiven 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 aus der Dropdownliste Sprache in der oberen Befehlsleiste festlegen.

Screenshot der Dropdownliste zum Auswählen einer Sprache in einem Synapse-Notebook.

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 Ausführen einer Python-Abfrage gegen SparkContext.
%%spark Scala Ausführen einer Skala-Abfrage gegen SparkContext.
%%sql Spark SQL Ausführen einer Spark SQL-Abfrage gegen SparkContext.
%%csharp .NET für Spark (C#) Ausführen einer .NET für Spark C#-Abfrage gegen SparkContext.
%%sparkr R Ausführen einer R-Abfrage gegen SparkContext.

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

Screenshot von Spark-Magic-Befehlen in einem Synapse-Notebook.

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 können Sie auf eine temporäre Tabelle in verschiedenen Sprachen verweisen. Hier ist ein Beispiel für das Lesen eines Scala DataFrame in PySpark und Spark SQL mithilfe einer temporären Spark-Tabelle als Workaround:

  1. Lesen Sie in Zelle 1 ein DataFrame 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")
    

Verwenden von IntelliSense im IDE-Stil

Synapse-Notebooks sind in den Monaco-Editor integriert, um den Zellen-Editor mit IDE-style IntelliSense auszustatten. Die Features der Syntax-Hervorhebung, der Fehlermarkierung und der automatischem Codevervollständigung helfen Ihnen beim Schreiben von Code und bei der schnelleren Identifizierung von Problemen.

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 Keine Ja
Spark SQL Ja Ja Ja Ja Ja Nr. Nr. No
.NET für Spark (C#) Ja Ja Ja Ja Ja Ja Ja Ja

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

Verwenden von Codeschnipseln

Synapse-Notebooks stellen Codeschnipsel bereit, welche die Eingabe häufig verwendeter Codemuster vereinfachen. Diese Muster umfassen das Konfigurieren Ihrer Spark-Sitzung, das Lesen von Daten als ein Spark DataFrame und das Zeichnen von Diagrammen mithilfe von Matplotlib.

Codeschnipsel werden in Tastaturkurzbefehlen in IntelliSense im IDE-Stil gemeinsam mit anderen Vorschlägen angezeigt. Der Inhalt der Codeschnipsel richtet sich nach der Codezellensprache. Sie können die verfügbaren Ausschnitte anzeigen, indem Sie Codeschnipsel oder ein beliebiges Schlüsselwort eingeben, die im Titel des Codeschnipsels im Codezellen-Editor angezeigt werden. Wenn Sie beispielsweise read eingeben, wird eine Liste der Codeschnipseln zum Lesen von Daten aus verschiedenen Datenquellen angezeigt.

Animiertes GIF von Codeschnipseln in einem Synapse-Notebook.

Formatieren von Textzellen mithilfe von Symbolleistenschaltflächen

Sie können die Formatierungsschaltflächen auf der Textzellensymbolleiste verwenden, um allgemeine Markdown-Aktionen durchzuführen. Diese Aktionen umfassen das Formatieren von Text als fett, das Formatieren von Text als kursiv, das Erstellen von Absätzen und Überschriften über ein Dropdownmenü, das Einfügen von Code, das Einfügen einer nicht sortierten Liste, das Einfügen einer sortierten Liste, das Einfügen eines Links und das Einfügen eines Bilds aus einer URL.

Screenshot der Textzellensymbolleiste in einem Synapse-Notebook.

Rückgängigmachen oder Wiederholen eines Zellenvorgangs

Um die letzten Zellvorgänge zu widerrufen, wählen Sie die Schaltfläche Rückgängig machen oder Wiederholen aus, oder wählen Sie die Z-TASTE oder UMSCHALT+Z aus. Sie können jetzt bis zu 10 vergangene Zellenvorgänge rückgängig machen oder wiederholen.

Screenshot der Schaltflächen „Rückgängig machen“ und „Wiederholen“ in einem Synapse-Notebook.

Zu den unterstützten Zellvorgängen gehören:

  • Einfügen oder Löschen einer Zeile. Sie können Löschvorgänge widerrufen, indem Sie Rückgängig machen auswählen. Diese Aktion behält den Textinhalt zusammen mit der Zelle bei.
  • Zellen neu anordnen.
  • Aktivieren oder Deaktivieren einer Parameterzelle.
  • Konvertieren zwischen einer Codezelle und einer Markdown-Zelle.

Hinweis

Sie können Textvorgänge oder Kommentarvorgänge in einer Zelle nicht rückgängig machen.

Kommentieren auf einer Codezelle

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

    Screenshot der Schaltfläche „Kommentare“ und des Bereichs „Kommentare“ in einem Synapse-Notebook.

  2. Wählen Sie Code in der Codezelle aus, wählen Sie im Bereich Kommentare die Option Neu aus, fügen Sie Kommentare hinzu, und wählen Sie dann die Schaltfläche Kommentar veröffentlichen aus.

    Screenshot des Felds zum Eingeben eines Kommentars in ein Synapse-Notebook.

  3. Bei Bedarf können Sie die Aktionen Kommentar bearbeiten, Thread auflösen und Thread löschen durchführen, indem Sie die Auslassungspunkte Weitere (...) neben Ihrem Kommentar auswählen.

    Screenshot zusätzlicher Befehle für eine Codezelle in einem Synapse-Notebook.

Eine Zelle verschieben

Um eine Zelle zu verschieben, wählen Sie die linke Seite der Zelle aus, und ziehen Sie die Zelle an die gewünschte Position.

Animiertes GIF von Zellen in einem Synapse-Notebook, die verschoben werden.

Eine Zelle löschen

Wählen Sie zum Löschen einer Zelle die Schaltfläche Löschen rechts neben der Zelle aus.

Sie können auch Tastenkombinationen im Befehlsmodus verwenden. Wählen Sie UMSCHALT+D aus, um die aktive Zelle zu löschen.

Screenshot der Schaltfläche zum Löschen einer Zelle in einem Synapse-Notebook.

Zelleneingabe reduzieren

Um die Eingabe der aktiven Zelle zu reduzieren, wählen Sie auf der Zellensymbolleiste die Auslassungspunkte für Weitere Befehle (...) und dann Eingabe ausblenden aus. Um die Eingabe zu erweitern, wählen Sie Eingabe anzeigen aus, während die Zelle reduziert ist.

Animiertes GIF zum Reduzieren und Erweitern der Zelleingabe in einem Synapse-Notebook.

Zellenausgabe reduzieren

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

Animierte GIF-Datei zum Reduzieren und Erweitern der Zellenausgabe in einem Synapse-Notebook.

Verwenden einer Notebookgliederung

Die Gliederung (Inhaltsverzeichnis) stellt den ersten Markdown-Header einer beliebigen Markdown-Zelle in einem Randleistenfenster für die schnelle Navigation dar. Die Gliederungsrandleiste ist in der Größe veränderbar und reduzierbar, damit sie optimal an den Bildschirm angepasst werden kann. Um die Seitenleiste zu öffnen oder auszublenden, können Sie die Schaltfläche Gliederung auf der Notebook-Befehlsleiste auswählen.

Screenshot der Gliederungsrandleiste in einem Synapse-Notebook.

Ausführen eines Notebooks

Sie können die Codezellen in Ihrem Notebook einzeln oder alle gleichzeitig ausführen. Der Zustand und Status jeder Zelle wird im Notebook angezeigt.

Hinweis

Das Löschen eines Notebooks führt nicht automatisch zum Abbruch von Aufträgen, die derzeit ausgeführt werden. Wenn Sie einen Auftrag abbrechen müssen, wechseln Sie zum Überwachen-Hub, und brechen Sie ihn manuell ab.

Ausführen einer Zelle

Es gibt mehrere Möglichkeiten zum Ausführen des Codes in einer Zelle:

  • Zeigen Sie mit der Maus auf die Zelle, die Sie ausführen möchten, und wählen Sie dann die Schaltfläche Zelle ausführen aus, oder wählen Sie STRG+EINGABETASTE aus.

    Screenshot des Befehls zum Ausführen einer Zelle in einem Synapse-Notebook.

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

Ausführen aller Zellen

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

Screenshot der Schaltfläche zum Ausführen aller Zellen in einem Synapse-Notebook.

Ausführen aller darüber- oder darunterliegenden Zellen

Um alle Zellen oberhalb der aktiven Zelle nacheinander auszuführen, erweitern Sie die Dropdownliste für die Schaltfläche Alle ausführen, und wählen Sie dann Zellen oberhalb ausführen aus. Wählen Sie Zellen unterhalb ausführen aus, um alle Zellen unterhalb der aktiven Zelle nacheinander auszuführen.

Screenshot der Befehle für die Ausführung von Zellen oberhalb und unterhalb der aktiven Zelle in einem Synapse-Notebook.

Abbrechen aller ausgeführten Zellen

Um die sich in Ausführung oder in der Warteschlange befindlichen Zellen abzubrechen, wählen Sie die Schaltfläche Alle abbrechen aus.

Screenshot der Schaltfläche zum Abbrechen aller sich in Ausführung befindlichen oder wartenden Zellen in einem Synapse-Notebook.

Verweis auf ein Notebook

Um im Kontext des aktuellen Notebooks auf ein anderes Notebook zu verweisen, verwenden Sie den Magic-Befehl %run <notebook path>. Alle im Referenznotebook definierten Variablen sind im aktuellen Notebook verfügbar.

Ein Beispiel:

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

Der Notebookverweis funktioniert sowohl im interaktiven Modus als auch in Pipelines.

Der Magic-Befehl %run hat folgende Einschränkungen:

  • Der Befehl unterstützt geschachtelte Aufrufe, aber keine rekursiven.
  • Der Befehl unterstützt das Übergeben eines absoluten Pfads oder Notebooknamens nur als Parameter. Er unterstützt keine relativen Pfade.
  • Der Befehl unterstützt derzeit nur vier Parameterwerttypen: int, float, bool und string. Er unterstützt keine Vorgänge zur Ersetzung von Variablen.
  • Die referenzierten Notebooks müssen veröffentlicht sein. Sie müssen die Notebooks veröffentlichen, um auf sie zu verweisen, es sei denn, Sie wählen die Option zum Aktivieren eines unveröffentlichten Notebookverweises aus. Synapse Studio erkennt die nicht veröffentlichten Notebooks aus dem Git-Repository nicht.
  • Referenzierte Notebooks unterstützen keine Anweisungstiefen größer als fünf.

Verwenden des Variablen-Explorers

Ein Synapse-Notebook stellt einen integrierten Variablen-Explorer in Form einer Tabelle bereit, in der Variablen in der aktuellen Spark-Sitzung für PySpark (Python)-Zellen aufgelistet sind. Die Tabelle enthält Spalten für Variablennamen, Typ, Länge und Wert. Weitere Variablen erscheinen automatisch, wenn sie in den Codezellen definiert werden. Das Auswählen einzelner Spaltenüberschriften sortiert die Variablen in der Tabelle.

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

Screenshot des Variablen-Explorers in einem Synapse-Notebook.

Hinweis

Der Variablen-Explorer unterstützt nur Python.

Verwenden des Zellenstatusindikators

Ein Schritt-für-Schritt-Status einer Zellenausführung wird unterhalb der Zelle angezeigt, um den aktuellen Status anzuzeigen. Nach Abschluss der Zellausführung wird eine Zusammenfassung mit der Gesamtdauer und Endzeit angezeigt und bleibt für zukünftige Verweise dort.

Screenshot der Zusammenfassung einer Zellenausführung in einem Synapse-Notebook.

Verwenden der Spark-Statusanzeige

Ein Synapse-Notebook basiert ausschließlich auf Spark. Codezellen werden remote auf dem serverlosen Apache Spark-Pool ausgeführt. Eine Spark-Auftragsstatusanzeige mit einer Echtzeit-Statusanzeige hilft Ihnen, den Auftragsausführungsstatus zu verstehen.

Die Anzahl der Aufgaben für jeden Auftrag oder jede Phase helfen Ihnen die Parallelebene Ihres Spark-Auftrags zu identifizieren. Darüber hinaus können Sie für einen bestimmten Auftrag (oder eine Phase) einen Drilldown zur Spark-Benutzeroberfläche ausführen, indem Sie auf den für den Auftrags- oder Phasennamen auf den Link klicken.

Screenshot der Spark-Statusanzeige in einem Synapse-Notebook.

Konfigurieren einer Spark-Sitzung

Im Bereich Sitzung konfigurieren können Sie die Timeoutdauer sowie die Anzahl und Größe der Executors angeben, die für die aktuelle Spark-Sitzung gelten sollen. Starten Sie die Spark-Sitzung neu, 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. Ausführliche Informationen finden Sie unter Apache Spark-Konfiguration verwalten.

Screenshot des Bereichs zum Konfigurieren einer Sitzung in einem Synapse-Notebook.

Magic-Befehl zum Konfigurieren einer Spark-Sitzung

Sie können Spark-Sitzungseinstellungen auch über den Magic-Befehl %%configure angeben. Damit die Einstellungen wirksam werden, starten Sie die Spark-Sitzung neu.

Wir empfehlen Ihnen, am Anfang Ihres Notebooks %%configure auszuführen. Hier ist ein Beispiel. Die vollständige Liste der gültigen Parameter finden Sie in den Livy-Informationen auf GitHub.

%%configure
{
    //You can get a list of valid parameters to configure 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 a standard Spark property. To find more available properties, go to https://spark.apache.org/docs/latest/configuration.html#application-properties.
        "spark.driver.maxResultSize":"10g",
    //Example of a customized property. You can specify the count of lines that Spark SQL returns by configuring "livy.rsc.sql.num-rows".
        "livy.rsc.sql.num-rows":"3000" 
    }
}

Hier sind einige Überlegungen für den Magic-Befehl %%configure:

  • Wir empfehlen Ihnen, denselben Wert für driverMemory und executorMemory in %%configure zu verwenden. Wir empfehlen Ihnen auch, dass driverCores und executorCores denselben Wert haben.
  • Sie können in Synapse-Pipelines %%configure verwenden, aber wenn Sie dies nicht in der ersten Codezelle festlegen, schlägt die Pipelineausführung fehl, da sie die Sitzung nicht neu starten kann.
  • Der in mssparkutils.notebook.run verwendete Befehl %%configure wird ignoriert, aber der in %run <notebook> verwendete Befehl wird weiterhin ausgeführt.
  • Sie müssen die standardmäßigen Spark-Konfigurationseigenschaften im Textkörper "conf" verwenden. Wir unterstützen keine Verweise auf oberster Ebene für die Spark-Konfigurationseigenschaften.
  • Einige spezielle Spark-Eigenschaften werden im Textkörper "conf" nicht wirksam werden, einschließlich "spark.driver.cores", "spark.executor.cores", "spark.driver.memory", "spark.executor.memory" und "spark.executor.instances".

Parametrisierte Sitzungskonfiguration aus einer Pipeline

Sie können die parametrisierte Sitzungskonfiguration verwenden, um Werte im Magic-Befehl %%configure durch Parameter der Pipelineausführung (Notebookaktivität) zu ersetzen. Wenn Sie eine %%configure-Codezelle vorbereiten, können Sie Standardwerte überschreiben, indem Sie ein Objekt wie folgt verwenden:

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

Das folgende Beispiel zeigt Standardwerte von 4 und "2000", die ebenfalls konfigurierbar sind:

%%configure  

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

Das Notebook verwendet den Standardwert, wenn Sie das Notebook direkt im interaktiven Modus ausführen, oder wenn die Notebookaktivität der Pipeline keinen Parameter bereitstellt, der "activityParameterName" entspricht.

Während dem Modus der Pipelineausführung können Sie die Registerkarte Einstellungen verwenden, um Einstellungen für eine Pipelinenotebookaktivität zu konfigurieren.

Screenshot der parametrisierten Sitzungskonfiguration in einem Synapse-Notebook.

Wenn Sie die Sitzungskonfiguration ändern möchten, sollte der Name des Parameters der Pipelinenotebookaktivität mit dem Namen von activityParameterName im Notebook übereinstimmen. In diesem Beispiel ersetzt 8 während einer Pipelineausführung driverCores in %%configure, und 4000 ersetzt livy.rsc.sql.num-rows.

Wenn eine Pipelineausführung fehlschlägt, nachdem Sie den Magic-Befehl %%configure verwendet haben, können Sie weitere Fehlerinformationen erhalten, indem Sie die Magic-Zelle %%configure im interaktiven Modus des Notebooks ausführen.

Einfügen von Daten in ein Notebook

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

Lesen einer CSV-Datei aus Azure Data Lake Storage Gen2 als Spark-DataFrame

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-DataFrame


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 Azure Blob Storage 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.

Screenshot, der das Öffnen einer neuen Spark-Tabelle zeigt, um auf Dateidaten in Azure Synapse Analytics zuzugreifen.

Verwenden von IPython-Widgets

Widgets sind ereignisreiche Python-Objekte, die eine Darstellung im Browser aufweisen, häufig als Steuerelement wie ein Schieberegler oder ein Textfeld. IPython-Widgets funktionieren nur in Python-Umgebungen. Sie werden derzeit nicht in anderen Sprachen unterstützt (z. B. Scala, SQL oder C#).

Schritte zur Verwendung von IPython-Widgets

  1. Importieren Sie das Modul ipywidgets, um das Jupyter Widgets-Framework zu verwenden:

    import ipywidgets as widgets
    
  2. Verwenden Sie die Funktion auf oberster Ebene display, um ein Widget zu rendern, oder hinterlassen Sie einen Ausdruck vom Typ widget in der letzten Zeile der Codezelle:

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

    Screenshot eines IPython-Widget-Schiebereglers in einem Synapse-Notebook.

Sie können mehrere display()-Aufrufe verwenden, um dieselbe Instanz des Widgets mehrfach zu rendern, diese bleiben aber miteinander synchronisiert:

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

Screenshot mehrerer IPython-Widget-Schieberegler in einem Synapse-Notebook.

Um zwei Widgets zu rendern, die unabhängig voneinander sind, erstellen Sie zwei Instanzen des Widgets:

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

Unterstützte Widgets

Widgettyp Widgets
Numeric IntSlider, FloatSlider, FloatLogSlider, IntRangeSlider, FloatRangeSlider, IntProgress, FloatProgress, BoundedIntText, BoundedFloatText, IntText, FloatText
Boolean ToggleButton, Checkbox, Valid
Auswahl Dropdown, RadioButtons, Select, SelectionSlider, SelectionRangeSlider, ToggleButtons, SelectMultiple
String Text, Text area, Combobox, Password, Label, HTML, HTML Math, Image, Button
Wiedergeben (Animation) Date picker, Color picker, Controller
Container/Layout Box, HBox, VBox, GridBox, Accordion, Tabs, Stacked

Bekannte Einschränkungen

  • In der folgenden Tabelle sind Widgets aufgeführt, die derzeit nicht unterstützt werden, zusammen mit Workarounds:

    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 Nicht verfügbar.
  • Die globale Funktion display, die Azure Synapse Analytics bereitstellt, unterstützt nicht das Anzeigen mehrerer Widgets in einem Aufruf (d. h. display(a, b)). Dieses Verhalten unterscheidet sich von der IPython-Funktion display.

  • Wenn Sie ein Notebook schließen, das ein IPython-Widget enthält, können Sie das Widget erst dann 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:

  • Um die von Ihnen an einem einzelnen Notebook vorgenommene Änderungen zu speichern, wählen Sie auf der Notebook-Befehlsleiste die Schaltfläche Veröffentlichen aus.

    Screenshot der Schaltfläche zum Veröffentlichen von Änderungen an einem Synapse-Notebook.

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

    Screenshot der Schaltfläche zum Veröffentlichen von Änderungen an allen Notebooks in einem Synapse-Arbeitsbereich.

Im Bereich Eigenschaften des Notebooks können Sie konfigurieren, ob die Zellenausgabe beim Speichern eingeschlossen werden soll.

Screenshot der Eigenschaften des Synapse-Notebooks und des Kontrollkästchens zum Einschließen der Zellenausgabe beim Speichern.

Verwenden der Magic-Befehle

Sie können bekannte Jupyter-Magic-Befehle in Synapse-Notebooks verwenden. Überprüfen Sie die folgenden Listen der 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 Synapse-Pipelines unterstützt: %%pyspark, %%spark, %%csharp, %%sql.

Verfügbare Magic-Befehle für Zeilen:

%lsmagic, %time, %timeit, %history, %run, %load

Verfügbare Magic-Befehle für Zellen:

%%time, %%timeit, %%capture, %%writefile, %%sql, %%pyspark, %%spark, %%csharp, %%html, %%configure

Verweisen auf ein unveröffentlichtes Notebook

Das Verweisen auf ein nicht veröffentlichtes Notebook ist hilfreich, wenn Sie lokal debuggen möchten. Wenn Sie dieses Feature aktivieren, ruft ein Notebook den aktuellen Inhalt im Webcache ab. Wenn Sie eine Zelle ausführen, die eine Notebookverweis-Anweisung enthält, verweisen Sie im aktuellen Notebookbrowser auf die präsentierenden Notebooks anstelle einer gespeicherten Version in einem Cluster. Andere Notebooks können in Ihrem Notebook-Editor auf die Änderungen verweisen, ohne dass Sie die Änderungen veröffentlichen (Livemodus) oder committen (Git-Modus) müssen. Mithilfe dieses Ansatzes können Sie die Verunreinigung allgemeiner Bibliotheken während des Entwicklungs- oder Debuggingprozesses verhindern.

Sie können das Verweisen auf ein nicht veröffentlichtes Notebook aktivieren, indem Sie im Bereich Eigenschaften das entsprechende Kontrollkästchen aktivieren.

Screenshot des Kontrollkästchens zum Aktivieren des Verweisens auf ein nicht veröffentlichtes Synapse-Notebook.

Die folgende Tabelle vergleicht die Fälle. Obwohl %run und mssparkutils.notebook.run hier das gleiche Verhalten aufweisen, verwendet die Tabelle %run als Beispiel.

Case 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 aktuellen Kanal)
%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 Sie das Verweisen auf ein nicht veröffentlichtes Notebook deaktivieren, führen Sie immer die veröffentlichte Version aus.
  • Wenn Sie das Verweisen auf ein nicht veröffentlichtes Notebook aktivieren, übernimmt die Referenzausführung immer die aktuelle Version des Notebooks, die in der Benutzeroberfläche des Notebooks angezeigt wird.

Verwalten aktiver Sitzungen

Sie können Ihre Notebooksitzungen wiederverwenden, ohne neue Sitzungen starten zu müssen. In Synapse-Notebooks können Sie Ihre aktiven Sitzungen in einer einzigen Liste verwalten. Um die Liste zu öffnen, wählen Sie die Auslassungspunkte (...) und dann Sitzungen verwalten aus.

Screenshot der Auswahlmöglichkeiten zum Öffnen einer Liste aktiver Synapse-Notebooksitzungen.

Im Bereich Aktive Sitzungen werden alle Sitzungen im aktuellen Arbeitsbereich aufgelistet, die Sie aus einem Notebook gestartet haben. Die Liste zeigt die Sitzungsinformationen und die dazugehörigen Notebooks. Die Aktionen Trennen mit Notebook, Beenden der Sitzungund Anzeigen in der Überwachung sind hier verfügbar. Außerdem können Sie Ihr ausgewähltes Notebook mit einer aktiven Sitzung verbinden, die von einem anderen Notebook aus gestartet wurde. Die Sitzung wird dann vom vorherigen Notebook getrennt (wenn es sich nicht im Leerlauf befindet) und dem aktuellen angefügt.

Screenshot des Bereichs für aktive Sitzungen in einem Synapse-Arbeitsbereich.

Verwenden von Python-Protokollen in einem Notebook

Mit dem folgenden Beispielcode können Sie Python-Protokolle finden und verschiedene Protokollebenen und -formate einstellen:

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 the 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 uses 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 uses 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")

Anzeigen des Verlaufs von Eingabebefehlen

Synapse-Notebooks unterstützen den Magic-Befehl %history zum Drucken des Eingabebefehlsverlaufs für die aktuelle Sitzung. Der Magic-Befehl %history ähnelt dem standardmäßigen Jupyter IPython-Befehl und funktioniert für mehrere Sprachkontexte in einem Notebook.

%history [-n] [range [range ...]]

Im vorherigen Code ist -n die Druckausführungsnummer. Der Wert range kann wie folgt lauten:

  • N: Drucken von Code der Nth. ausgeführten Zelle.
  • M-N: Drucken von Code aus der Mth. bis zur Nth. ausgeführten Zelle.

Um beispielsweise den Eingabeverlauf von der ersten bis zur zweiten ausgeführten Zelle zu drucken, verwenden Sie %history -n 1-2.

Integrieren eines Notebooks

Hinzufügen eines Notebooks zu einer Pipeline

Um ein Notebook zu einer vorhandenen Pipeline hinzuzufügen oder eine neue Pipeline zu erstellen, wählen Sie in der oberen rechten Ecke die Schaltfläche Zur Pipeline hinzufügen aus.

Screenshot der Menüoptionen zum Hinzufügen eines Notebooks zu einer vorhandenen oder neuen Synapse-Pipeline.

Festlegen einer Parameterzelle

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

Screenshot der Menüoption zum Festlegen einer Zelle als Parameterzelle.

Azure Data Factory sucht nach der Parameterzelle und behandelt diese Zelle als den Standard für die Parameter, die zur Ausführungszeit übermittelt werden. Das Ausführungsmodul fügt eine neue Zelle unter der Parameterzelle mit Eingabeparametern hinzu, um die Standardwerte zu überschreiben.

Zuweisen von Parameterwerten über eine Pipeline

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

Screenshot des Bereichs zum Zuweisen von Parametern in Azure Synapse Analytics.

Wenn Sie Parameterwerte zuweisen, können Sie die Pipelineausdruckssprache oder Systemvariablen verwenden.

Verwenden von 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 beiden Modi für eine Codezelle:

  • Befehlsmodus: Eine Zelle befindet sich im Befehlsmodus, wenn kein Textcursor Sie zum Eingeben auffordert. Wenn sich eine Zelle im Befehlsmodus befindet, können Sie das Notebook als Ganzes bearbeiten, aber keine Eingaben in einzelnen Zellen vornehmen. Wechseln Sie in den Befehlsmodus, indem Sie die ESC-TASTE auswählen oder die Maus verwenden, um den Bereich außerhalb des Editorbereichs einer Zelle auszuwählen.

    Screenshot des Befehlsmodus in einem Synapse-Notebook.

  • Bearbeitungsmodus: Wenn sich eine Zelle im Bearbeitungsmodus befindet, werden Sie von einem Textcursor aufgefordert, in die Zelle einzugeben. Wechseln Sie in den Bearbeitungsmodus, indem Sie die EINGABETASTE auswählen oder die Maus verwenden, um den Editorbereich einer Zelle auszuwählen.

    Screenshot des Bearbeitungsmodus in einem Synapse-Notebook.

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

Aktion Tastenkombinationen für Synapse-Notebooks
Cursor nach oben verschieben Nach oben
Cursor nach unten verschieben Nach unten
Rückgängig machen STRG+Z
Wiederholen STRG+Y
Auskommentieren/Auskommentierung aufheben STRG+/
Wort davor löschen STRG+RÜCKTASTE
Wort danach löschen STRG+ENTF
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