Freigeben über


Entwickeln von Code in Databricks-Notebooks

In diesem Artikel wird beschrieben, wie Sie Code in Databricks-Notebooks entwickeln, einschließlich AutoVervollständigen-Funktion, automatischer Formatierung für Python und SQL, der Kombination von Python und SQL in einem Notebook sowie der Verfolgung des Versionsverlaufs für ein Notebook.

Weitere Informationen zu erweiterten Funktionen, die im Editor verfügbar sind, z. B. AutoVervollständigen, Variable Auswahl, Unterstützung für mehrere Cursor und parallele Diffs, finden Sie unter Navigieren im Databricks-Notizbuch und im Datei-Editor.

Wenn Sie das Notebook oder den Datei-Editor verwenden, steht der Databricks-Assistent zur Verfügung, um Code zu generieren, zu erläutern und zu debuggen. Weitere Informationen finden Sie unter Verwenden des Databricks-Assistenten .

Databricks-Notebooks enthalten auch einen integrierten interaktiven Debugger für Python-Notebooks. Siehe Debuggen von Notizbüchern.

Modularisieren des Codes

Mit Databricks Runtime 11.3 LTS und höher können Sie Quellcodedateien im Azure Databricks-Arbeitsbereich erstellen und verwalten und diese Dateien dann nach Bedarf in Ihre Notebooks importieren.

Weitere Informationen zum Arbeiten mit Quellcodedateien finden Sie unter Freigeben von Code zwischen Databricks-Notebooks und Arbeiten mit Python- und R-Modulen.

Verwenden von KI zum Optimieren von Python, PySpark und SQL

Formatieren von Codezellen

Azure Databricks bietet Tools, mit denen Sie Python- und SQL-Code in Notebookzellen schnell und einfach formatieren können. Diese Tools reduzieren den Aufwand für die Formatierung Ihres Codes und tragen dazu bei, in allen Notebooks die gleichen Codierungsstandards umzusetzen.

Python-Bibliothek für den Black-Formatierer

Wichtig

Dieses Feature befindet sich in der Public Preview.

Azure Databricks unterstützt die Python-Codeformatierung mithilfe von Black im Notebook. Das Notebook muss mit einem Cluster verbunden sein, auf dem die Python-Pakete black und tokenize-rt installiert sind.

In Databricks Runtime 11.3 LTS und höher installiert Azure Databricks black und tokenize-rt vorab. Sie können den Formatierer direkt verwenden, ohne diese Bibliotheken installieren zu müssen.

Unter Databricks Runtime 10.4 LTS und früher müssen Sie black==22.3.0 und tokenize-rt==4.2.1 aus PyPI in Ihrem Notebook oder Cluster installieren, um den Python-Formatierer nutzen zu können. Sie können den folgenden Befehl in Ihrem Notebook ausführen:

%pip install black==22.3.0 tokenize-rt==4.2.1

oder die Bibliothek auf Ihrem Cluster installieren.

Weitere Informationen zum Installieren von Bibliotheken finden Sie unter Python-Umgebungsverwaltung.

Für Dateien und Notebooks in Databricks Git-Ordnern können Sie den Python-Formatierer basierend auf der pyproject.toml-Datei konfigurieren. Um dieses Feature zu verwenden, erstellen Sie eine pyproject.toml-Datei im Stammverzeichnis des Git-Ordners, und konfigurieren Sie sie gemäß dem Konfigurationsformat „Black“. Bearbeiten Sie den Abschnitt [tool.black] in der Datei. Die Konfiguration wird angewendet, wenn Sie eine beliebige Datei und ein Notebook in diesem Git-Ordner formatieren.

Formatieren von Python- und SQL-Zellen

Sie benötigen die KANN BEARBEITEN-Berechtigung für das Notebook, um Code zu formatieren.

Azure Databricks verwendet die Gethue/sql-formatter-Bibliothek, um SQL und den Black-Codeformatierer für Python zu formatieren.

Sie können die Formatierung auf folgende Weise auslösen:

  • Formatieren einer einzelnen Zelle

    • Tastenkombination: Drücken Sie CMD+UMSCHALT+F.
    • Befehlskontextmenü:
      • SQL-Zelle formatieren: Wählen Sie SQL formatieren im Befehlskontext-Dropdownmenü einer SQL-Zelle aus. Dieses Menüelement ist nur in SQL-Notebookzellen oder in Zellen mit einem %sql des Typs sichtbar.
      • Python-Zelle formatieren: Wählen Sie Python formatieren im Befehlskontext-Dropdownmenü einer Python-Zelle aus. Dieses Menüelement ist nur in Python-Notebookzellen oder in Zellen mit einem %python des Typs sichtbar.
    • Menü Bearbeiten eines Notebooks: Wählen Sie eine Python- oder SQL-Zelle aus, und wählen Sie dann Bearbeiten > Zelle(n) formatieren aus.
  • Formatieren mehrerer Zellen

    Wählen Sie mehrere Zellen und dann Bearbeiten > Zelle(n) formatieren aus. Wenn Sie Zellen mit mehreren Sprachen auswählen, werden nur SQL- und Python-Zellen formatiert. Dies umfasst auch diejenigen, die %sql und %python verwenden.

  • Formatieren aller Python- und SQL-Zellen im Notebook

    Wählen Sie Bearbeiten > Notebook formatieren aus. Wenn Ihr Notebook mehrere Zellen beinhaltet, werden nur SQL- und Python-Zellen formatiert. Dies umfasst auch diejenigen, die %sql und %python verwenden.

Informationen zum Anpassen der Formatierung Ihrer SQL-Abfragen finden Sie unter SQL-Anweisungen im benutzerdefinierten Format.

Einschränkungen der Codeformatierung

  • Black erzwingt PEP 8-Standards für einen Einzug aus 4 Leerzeichen. Der Einzug ist nicht konfigurierbar.
  • Das Formatieren eingebetteter Python-Zeichenfolgen in einer SQL-UDF wird nicht unterstützt. Ebenso wird das Formatieren von SQL-Zeichenfolgen innerhalb einer Python-UDF nicht unterstützt.

Codesprachen in Notebooks

Festlegen der Standardsprache

Die Standardsprache für das Notizbuch wird unterhalb des Notizbuchnamens angezeigt.

Standardsprache des Notebooks

Um die Standardsprache zu ändern, klicken Sie auf die Schaltfläche „Sprache“, und wählen Sie im Dropdownmenü die neue Sprache aus. Um sicherzustellen, dass vorhandene Befehle weiterhin funktionieren, wird Befehlen der vorherigen Standardsprache automatisch ein Magic-Befehl für Sprache vorangestellt.

Mischen von Sprachen

Standardmäßig verwenden Zellen die Standardsprache des Notebooks. Sie können die Standardsprache in einer Zelle überschreiben, indem Sie auf die Schaltfläche „Sprache“ klicken und eine Sprache aus dem Dropdownmenü auswählen.

Dropdownmenü der Zellsprachen

Alternativ können Sie auch den Magic-Befehl für Sprache %<language> am Anfang einer Zelle verwenden. Die unterstützten Magic-Befehle sind: %python, %r, %scala und %sql.

Hinweis

Wenn Sie einen Magic-Befehl für Sprache aufrufen, wird der Befehl an die REPL im Ausführungskontext für das Notebook gesendet. Variablen, die in einer Sprache (und somit in der REPL für diese Sprache) definiert sind, sind in der REPL einer anderen Sprache nicht verfügbar. REPLs können den Status nur über externe Ressourcen wie Dateien im DBFS oder Objekte im Objektspeicher gemeinsam nutzen.

Notebooks unterstützen auch einige zusätzliche Magic-Befehle:

  • %sh: Ermöglicht das Ausführen von Shellcode in Ihrem Notebook. Fügen Sie die Option -e hinzu, damit die Zelle einen Fehler auslöst, wenn der Shellbefehl einen Beendigungsstatus ungleich null aufweist. Dieser Befehl wird nur auf dem Apache Spark-Treiber und nicht auf den Workern ausgeführt. Um einen Shellbefehl auf allen Knoten auszuführen, verwenden Sie ein Initialisierungsskript.
  • %fs: Ermöglicht die Verwendung von dbutils-Dateisystembefehlen. Um beispielsweise den Befehl dbutils.fs.ls zum Auflisten von Dateien auszuführen, können Sie stattdessen %fs ls angeben. Weitere Informationen finden Sie unter Arbeiten mit Dateien in Azure Databricks.
  • %md: Ermöglicht Ihnen die Verwendung verschiedener Arten von Dokumentationen, einschließlich Text, Bildern und mathematischer Formeln und Formeln. Siehe nächster Abschnitt.

SQL-Syntaxhervorhebung und AutoVervollständigen in Python-Befehlen

Syntaxhervorhebung und SQL-AutoVervollständigen sind verfügbar, wenn Sie SQL in einem Python-Befehl verwenden, z. B. in einem spark.sql-Befehl.

Erkunden von SQL-Zellergebnissen

In einem Databricks-Notizbuch werden Ergebnisse aus einer SQL-Sprachzelle automatisch als impliziter DataFrame zur Verfügung gestellt, der der Variablen _sqldfzugewiesen ist. Sie können diese Variable dann in allen Python- und SQL-Zellen verwenden, die Sie danach ausführen, unabhängig von ihrer Position im Notizbuch.

Hinweis

Für diese Funktion gelten folgende Einschränkungen:

  • Die _sqldf Variable ist in Notizbüchern, die ein SQL Warehouse für die Berechnung verwenden, nicht verfügbar.
  • Die Verwendung _sqldf in nachfolgenden Python-Zellen wird in Databricks Runtime 13.3 und höher unterstützt.
  • Die Verwendung _sqldf in nachfolgenden SQL-Zellen wird nur für Databricks Runtime 14.3 und höher unterstützt.
  • Wenn die Abfrage die Schlüsselwörter CACHE TABLE verwendet oder UNCACHE TABLEdie _sqldf Variable nicht verfügbar ist.

Der folgende Screenshot zeigt, wie _sqldf in nachfolgenden Python- und SQL-Zellen verwendet werden kann:

DataFrame der SQL-Ergebnisse

Wichtig

Die Variable _sqldf wird jedes Mal neu zugewiesen, wenn eine SQL-Zelle ausgeführt wird. Um den Verweis auf ein bestimmtes DataFrame-Ergebnis zu vermeiden, weisen Sie ihn einem neuen Variablennamen zu, bevor Sie die nächste SQL-Zelle ausführen:

Python

new_dataframe_name = _sqldf

SQL

ALTER VIEW _sqldf RENAME TO new_dataframe_name

Paralleles Ausführen von SQL-Zellen

Während ein Befehl ausgeführt wird und Ihr Notebook an einen interaktiven Cluster angefügt ist, können Sie eine SQL-Zelle gleichzeitig mit dem aktuellen Befehl ausführen. Die SQL-Zelle wird in einer neuen parallelen Sitzung ausgeführt.

So führen Sie eine Zelle parallel aus:

  1. Führen Sie die Zelle aus.

  2. Klicken Sie auf Jetzt ausführen. Die Zelle wird sofort ausgeführt.

    Führen Sie eine SQL-Zelle parallel mit der aktuellen ausgeführten Zelle aus.

Da die Zelle in einer neuen Sitzung ausgeführt wird, werden temporäre Ansichten, UDFs und der implizite Python-DatenFrame (_sqldf) für parallel ausgeführte Zellen nicht unterstützt. Darüber hinaus werden die Standardkatalog- und Datenbanknamen während der parallelen Ausführung verwendet. Wenn Ihr Code auf eine Tabelle in einem anderen Katalog oder in einer anderen Datenbank verweist, müssen Sie den Tabellennamen mithilfe des dreiteiligen Namespace (catalog.schema.table) angeben.

Ausführen von SQL-Zellen in einem SQL-Warehouse

Sie können SQL-Befehle in einem Databricks-Notebook in einem SQL-Warehouse ausführen, einem Computetyp, der für SQL-Analysen optimiert ist. Weitere Informationen finden Sie unter Verwenden eines Notebooks mit einem SQL-Warehouse.

Ausführen von Code im Assistenten auf serverlosem Compute

Sie können Code im Assistenten auf Databricks auf serverlosem Compute ausführen, was die Standardberechnung für Databricks ist. Bei Seiten, auf denen bereits eine Rechenressource ausgewählt wurde (z. B. Notizbüchern oder dem SQL-Editor), verwendet Databricks standardmäßig diese. Informationen zu Computetypen finden Sie unter " Computetypen".

Wenn Sie keinen Zugriff auf serverlose Berechnungen haben, müssen Sie über eine Computeinstanz verfügen, um Code im Assistentenbereich auszuführen.