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 Notebooks.

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.

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 schwarz Formatierer Bibliothek

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:

  • Format 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 %sqlSprach-Magic-Befehl 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 %pythonSprach-Magic-Befehl 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

    Aktivieren Sie mehrere Zellen und dann Auswählen Bearbeiten > Format Zelle(n). Wenn Sie Zellen mit mehreren Sprachen auswählen, werden nur SQL- und Python-Zellen formatiert. Dies schließt auch Zellen mit Verwendung von %sql und %python ein.

  • Formatieren Sie alle Python- und SQL-Zellen im Notizbuch

    Wählen Sie Bearbeiten > Notebook formatieren aus. Wenn Ihr Notebook mehrere Zellen beinhaltet, werden nur SQL- und Python-Zellen formatiert. Dies schließt auch Zellen mit Verwendung von %sql und %python ein.

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

Standardsprache festlegen

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.

Mix 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ü „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 Ihnen, Shell-Code in Ihrem Notizbuch auszuführen. 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 Nutzung 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, verschiedene Arten von Dokumentation einzuschließen, einschließlich Text, Bilder und mathematische Formeln und Gleichungen. 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.

SQL-Zellenergebnisse erkunden

In einem Databricks-Notizbuch werden Ergebnisse aus einer SQL-Sprachen-Zelle automatisch als impliziter DataFrame verfügbar gemacht, der der Variable „_sqldf“ zugewiesen wird. 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 Notebooks, die ein SQL-Lagerort für Compute nutzen, nicht verfügbar.
  • Die Verwendung von _sqldf in nachfolgenden Python-Zellen wird in Databricks Runtime 13.3 und höher unterstützt.
  • Die Verwendung von _sqldf in nachfolgenden SQL-Zellen wird nur auf Databricks Runtime 14.3 und höher unterstützt.
  • Wenn die Abfrage die Schlüsselwörter CACHE TABLE oder UNCACHE TABLE verwendet, ist die Variable _sqldf nicht verfügbar.

Der Screenshot unten 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 spezifisches DataFrame-Ergebnis nicht zu verlieren, weisen Sie es 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

SQL-Zellen parallel ausführen

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.

Code in serverlosem Computing auf Compute ausführen

Sie können Code im Assistenten auf Databricks auf serverlosem Compute ausführen, was die Standardberechnung für Databricks ist. Für Seiten, auf denen bereits ein Compute ausgewählt ist (zum Beispiel Notizbücher oder SQL-Editor), verwendet Databricks standardmäßig dieses. Informationen zu Computetypen finden Sie unter Compute.

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

Verwenden von Magischen Befehlen

Databricks-Notizbücher unterstützen verschiedene Magische Befehle, die Funktionen über die Standardsyntax hinaus erweitern, um allgemeine Aufgaben zu vereinfachen. Magische Befehle werden für Zeilen- und Zellmagie mit % vorangestellt.

Magic-Befehl Beispiel Beschreibung
%python %python
print("Hello")
Ändern Sie die Zellensprache zu Python. Führt Python-Code in der Zelle aus.
%r %r
print("Hello")
Ändern Sie die Zellensprache auf R. Führt R-Code in der Zelle aus.
%scala %scala
println("Hello")
Wechseln Sie die Sprache der Zelle zu Scala. Führt Scala-Code in der Zelle aus.
%sql %sql
SELECT * FROM table
Wechseln der Zellensprache zu SQL. Ergebnisse sind wie _sqldf in Python/SQL-Zellen verfügbar.
%md %md
# Title
Content here
Wechseln Sie die Zellensprache auf Markdown. Rendert Markdown-Inhalt in der Zelle. Unterstützt Text, Bilder, Formeln und LaTeX.
%pip %pip install pandas Installieren Von Python-Paketen (Notizbuchbereich). Siehe Notebook-spezifische Python-Bibliotheken.
%run %run /path/to/notebook Führen Sie ein anderes Notizbuch aus, und importieren Sie deren Funktionen und Variablen. Siehe Notizbuchworkflows.
%fs %fs ls /path Führen Sie Dbutils-Dateisystembefehle aus. Kurzform für dbutils.fs Befehle. Siehe "Arbeiten mit Dateien".
%sh %sh ls -la Führen Sie Shellbefehle aus. Wird nur auf Treiberknoten ausgeführt. Verwenden Sie -e, um bei Fehlern einen Ausfall zu verursachen.
%tensorboard %tensorboard --logdir /logs TensorBoard-UI-Inline anzeigen. Nur für Databricks Runtime ML verfügbar. Siehe TensorBoard.
%set_cell_max_output_size_in_mb %set_cell_max_output_size_in_mb 10 Legen Sie die maximale Zellenausgabegröße fest. Bereich: 1-20 MB. Gilt für alle nachfolgenden Zellen im Notizbuch.
%skip %skip
print("This won't run")
Überspringen der Zellausführung. Verhindert, dass die Zelle läuft, wenn das Notizbuch ausgeführt wird.

Hinweis

IPython Automagic: Databricks-Notizbücher haben standardmäßig IPython Automagic aktiviert, sodass bestimmte Befehle wie pip ohne das %-Präfix funktionieren können. Funktioniert z. B pip install pandas . genauso wie %pip install pandas.

Wichtig

  • Variablen und Zustand sind zwischen verschiedenen Sprach-REPLs isoliert. Python-Variablen sind beispielsweise in Scala-Zellen nicht zugänglich.
  • Eine Notizbuchzelle kann nur einen Befehl zur Magie der Zelle haben, und sie muss die erste Zeile der Zelle sein.
  • %run muss sich in einer eigenen Zelle befinden, da das gesamte Notizbuch inline ausgeführt wird.
  • Wenn Sie %pip auf Databricks Runtime 12.2 LTS und niedrigeren Versionen verwenden, platzieren Sie alle Paketinstallationsbefehle am Anfang Ihres Notizbuchs, da der Python-Status nach der Installation zurückgesetzt wird.