Databricks Fernentwicklung

Von Bedeutung

Die Remoteentwicklung befindet sich in der Betaversion.

Mit Databricks Remote Development können Sie auf Ihren Arbeitsbereich zugreifen und Workloads auf Databricks über einen SSH-Tunnel interaktiv ausführen. Es ist einfach einzurichten, beseitigt die Notwendigkeit der Umgebungsverwaltung und hält alle Code und Daten in Ihrem Databricks-Arbeitsbereich sicher.

Anforderungen

Um die Remoteentwicklung zu verwenden, müssen Sie folgendes haben:

  • Databricks CLI Version 0.269 oder höher muss auf Ihrem lokalen Computer installiert sein und die Authentifizierung konfiguriert sein. Siehe Installieren.
  • Ein dedizierter (Einzelbenutzer)-Cluster mit Databricks Runtime 17.0 oder höher. Siehe Dedizierte Berechnungsübersicht. Zusätzlich:
    • Unity-Katalog muss aktiviert sein.
    • Wenn eine Richtlinie für Computerressourcen vorhanden ist, darf die Ausführung von Aufträgen nicht verhindert werden.

Einrichten der SSH-Verbindung

Richten Sie zunächst den SSH-Tunnel mit dem Befehl "databricks ssh setup " ein. Ersetzen Sie <connection-name> durch den Namen der Verbindung, zum Beispiel my-connection.

databricks ssh setup --name <connection-name>

Die CLI fordert Sie auf, einen Cluster auszuwählen. Sie können auch direkt mit --cluster <cluster-id> eine angeben:

databricks ssh setup --name <connection-name> --cluster <cluster-id>

Hinweis

Bei IntelliJ-Benutzern empfiehlt Databricks, dem Setupbefehl hinzuzufügen --auto-start-cluster=false und den Cluster manuell zu starten, bevor eine Verbindung hergestellt wird. Dies liegt daran, dass JetBrains-IDEs alle konfigurierten Cluster beim Start starten, was zu unerwarteten Berechnungsgebühren führen kann.

Herstellen einer Verbindung mit Databricks

Stellen Sie als Nächstes eine Verbindung mit Databricks über eine IDE oder ein Terminal her.

Herstellen einer Verbindung mit Visual Studio Code oder Cursor

  1. Installieren Sie für Visual Studio Code die Remote-SSH-Erweiterung. Der Cursor enthält standardmäßig eine Remote-SSH-Erweiterung.

  2. Klicken Sie im Hauptmenü der IDE auf Ansicht>Befehlspalette. Wählen Sie Remote-SSH: Einstellungen aus. Wählen Sie alternativ "Einstellungen" aus: Öffnen Sie die Benutzereinstellungen (JSON), um sie direkt zu ändern settings.json .

  3. Fügen Sie unter Remote.SSH: Standarderweiterungen (oder remote.SSH.defaultExtensions in settings.json) hinzu ms-Python.Python und ms-toolsai.jupyter.

    Wenn Sie settings.json ändern:

    "remote.SSH.defaultExtensions": [
        "ms-Python.Python",
        "ms-toolsai.jupyter"
    ]
    

    Hinweis

    Erhöhen Sie optional den Wert von Remote.SSH: Connect Timeout (oder remote.SSH.connectTimeout in settings.json), um die Wahrscheinlichkeit von Timeoutfehlern weiter zu verringern. Das Standardtimeout ist 360.

  4. Wählen Sie in der Befehlspalette Remote-SSH: Verbindung mit Host herstellen.

  5. Wählen Sie in der Dropdownliste die Verbindung aus, die Sie im ersten Schritt eingerichtet haben. Die IDE fährt mit der Verbindung in einem neuen Fenster fort.

Verbinden mit IntelliJ-IDEs

  1. Folgen Sie dem Remoteserver-Tutorial, um die Einrichtung vorzunehmen.
  2. Geben Sie auf dem neuen Verbindungsbildschirm Folgendes ein:
    • Benutzername: root
    • Host: <connection-name>

Verbinden mit Terminal

ssh <connection-name>

Projekte öffnen

Verwenden Sie nach dem Herstellen der Verbindung " Ordner öffnen " aus der Befehlspalette, und navigieren Sie zu /Workspace/Users/<your-username>.

Hinweis

Dateien in /Workspace, /Volumes, und /dbfs persistieren bei Clusterneustarts. Dateien in /home, /rootund andere lokale Pfade sind kurzlebig und gehen beim Neustart verloren.

Run-Code (Visual Studio Code oder Cursor)

Um Code mithilfe der Remoteentwicklung auszuführen, müssen Sie sicherstellen, dass die virtuelle Databricks-Umgebung eingerichtet ist. Diese Umgebung umfasst alle integrierten DBR-Bibliotheken und Compute-Bereichs-Bibliotheken.

  1. Führen Sie die Ausführung echo $DATABRICKS_VIRTUAL_ENV von einem Terminal innerhalb der IDE aus.

    Beispielausgabe: /local_disk0/.ephemeral_nfs/envs/pythonEnv-xxx/bin/python

  2. Öffnen Sie die Befehlspalette, und wählen Sie Python: Wählen Sie Dolmetscher aus. Fügen Sie die Ausgabe von oben ein.

  3. Öffnen Sie ein neues Terminal, und die virtuelle Umgebung sollte automatisch aktiviert werden.

  4. Um ein Jupyter-Notizbuch auszuführen, stellen Sie sicher, dass die virtuelle Umgebung als Kernel ausgewählt ist. Klicken Sie oben rechts im Notizbuch auf "Kernel auswählen ".

Python Dateien und .ipynb-Notizbücher können mit den standardmäßigen Python- und Jupyter-Erweiterungen ausgeführt und gedebuggt werden.

Verwalten von Python-Abhängigkeiten

Python-Abhängigkeiten können global auf Clusterebene oder auf einzelne Projekte mithilfe von Notebooks verwaltet werden.

Installieren Sie Abhängigkeiten über die Arbeitsbereichs-UI unter "ComputeBibliotheken>". Diese bleiben auch nach Neustarts des Clusters bestehen und sind in pythonEnv-xxx verfügbar. Siehe Clusterbibliotheken.

Projektspezifische Notizbucheinrichtung

Führen Sie für projektbezogene Abhängigkeiten zu Beginn jeder Sitzung ein Notizbuch mit %pip install Befehlen aus:

# Install from pyproject.toml
%pip install .

# Install from a requirements file
%pip install -r requirements.txt

# Install a wheel from Volumes or Workspace
%pip install /Volumes/catalog/schema/volume/your_library.whl

%pip Befehle umfassen Databricks-spezifische Schutzläufe und verteilen Abhängigkeiten an Spark-Executorknoten. Dadurch können benutzerdefinierte Funktionen (USER-Defined Functions, UDFs) mit benutzerdefinierten Abhängigkeiten aktiviert werden.

Weitere Beispiele finden Sie unter Verwalten von Bibliotheken mit %pip Befehlen.

Sie müssen das Notizbuch nicht erneut ausführen, wenn die Sitzung im Laufe von 10 Minuten wieder verbunden wird. Dies ist in Ihrer SSH-Konfiguration mit -shutdown-delay einstellbar.

Hinweis

Mehrere SSH-Sitzungen auf demselben Cluster teilen eine virtuelle Umgebung.

Einschränkungen

Databricks Remote Development hat die folgenden Einschränkungen:

  • Freigegebene Cluster mit mehreren Benutzern und Serverlosen werden noch nicht unterstützt.
  • Die Databricks-Erweiterung für Visual Studio Code und Remoteentwicklung ist noch nicht kompatibel und sollte nicht zusammen verwendet werden.
  • Dateien, die außerhalb /Workspacebearbeitet wurden, /Volumesund /dbfs gehen beim Clusterneustart verloren.
  • Pro Cluster sind maximal 10 SSH-Verbindungen zulässig.
  • Inaktive Sitzungen können nach 1 Stunde abgebrochen werden.

Unterschiede bei Databricks-Notizbüchern

Bei der Remoteentwicklung gibt es einige Unterschiede in Notizbüchern:

  • Python-Dateien definieren keine Databricks-Globalen (wie spark oder dbutils). Sie müssen sie explizit mit from databricks.sdk.runtime import spark.
  • Für ipynb-Notizbücher stehen diese Features zur Verfügung:
    • Databricks Globals: display, displayHTML, dbutils, table, sql, udf, getArgument, sc, sqlContext, spark
    • %sql Zauberbefehl zum Ausführen von SQL-Zellen

So arbeiten Sie mit Python-Quellnotebooks:

  • Suchen Sie nach jupyter.interactiveWindow.cellMarker.codeRegex und setzen Sie es auf:

    ^# COMMAND ----------|^# Databricks notebook source|^(#\\s*%%|#\\s*\\<codecell\\>|#\\s*In\\[\\d*?\\]|#\\s*In\\[ \\])
    
  • Suchen Sie nach jupyter.interactiveWindow.cellMarker.default und setzen Sie es auf:

    # COMMAND ----------
    

Problembehandlung

Dieser Abschnitt enthält Informationen zum Beheben häufig auftretender Probleme.

SSH-Verbindung schlägt fehl oder läuft ab

  • Überprüfen Sie, ob der Cluster in der Arbeitsbereichsbenutzeroberfläche ausgeführt wird.
  • Überprüfen Sie, ob ausgehender Port 22 geöffnet und auf Ihrem Laptop, Netzwerk und VPN zulässig ist.
  • Erhöhen Sie das SSH-Timeout. Siehe Verbinden mit Visual Studio Code oder Cursor.
  • Bei Fehlern aufgrund von Schlüsselkonflikten ~/.databricks/ssh-tunnel-keys löschen und databricks ssh setup erneut ausführen.
  • Bei Fehlern bei der Remote-Host-Identifizierung überprüfen Sie die ~/.ssh/known_hosts Datei und löschen Sie Einträge im Zusammenhang mit Ihrem Cluster.
  • SSH-Sitzungen können nach 1 Stunde abgebrochen werden, und es können nicht mehr als 10 SSH-Verbindungen zu einem einzelnen Cluster hergestellt werden. Informationen finden Sie unter Einschränkungen.

CLI-Authentifizierungsfehler

  • Vergewissern Sie sich, dass Ihr Databricks CLI-Profil gültig ist.databricks auth login
  • Bestätigen Sie, dass Sie über Berechtigungen für den Cluster verfügen CAN MANAGE .

Mein Code funktioniert nicht

Dateien verschwinden oder die Umgebung wird nach dem Neustart des Clusters zurückgesetzt.

  • Dateien in /Workspace, /Volumes und /dbfs Einhängungen bleiben über Clusterneustarts bestehen. Dateien in /home, /rootund andere lokale Pfade sind kurzlebig und gehen beim Neustart verloren.
  • Verwenden Sie die Clusterbibliotheksverwaltung für dauerhafte Abhängigkeiten. Automatisieren Sie bei Bedarf neuinstallationen mithilfe von Init-Skripts. Weitere Informationen finden Sie unter Was sind Initskripts?.

SSH-Setup schlägt bei Windows (WSL) fehl.

Führen Sie databricks ssh setup direkt auf Windows aus, nicht innerhalb von WSL. Die Windows VS Code-Instanz kann keine SSH-Konfigurationen finden, die auf der WSL-Seite erstellt wurden.

Häufig gestellte Fragen

Wie unterscheidet sich die Remoteentwicklung von Databricks Connect?

Mit Databricks Connect können Sie Code mithilfe von Spark-APIs schreiben und remote auf Databricks ausführen, anstatt in der lokalen Spark-Sitzung. Die Databricks-Visual Studio Code-Erweiterung verwendet Databricks Connect, um integriertes Debuggen von Benutzercode auf Databricks bereitzustellen.

Mithilfe der Remoteentwicklung können Sie von Ihrer IDE aus auf den Arbeitsbereich zugreifen und Ihre gesamte Entwicklungsumgebung in den Cluster verschieben – Python, Kernel und alle Ausführungsläufe auf Databricks mit vollzugriff auf Clusterressourcen.

Wie wird mein Code und meine Daten gesichert?

Der gesamte Code wird innerhalb Ihrer Databricks-Cloud-VPC ausgeführt. Keine Daten oder Code verlassen Ihre sichere Umgebung. SSH-Datenverkehr ist vollständig verschlüsselt.

Welche IDEs werden unterstützt?

Visual Studio Code und Cursor werden offiziell unterstützt. Jede IDE mit SSH-Funktionen ist kompatibel, aber nur VS Code und Cursor werden getestet.

Sind alle Databricks-Notizbuchfeatures über die IDE verfügbar?

Einige Features, z. B. display(), dbutils, und %sql sind mit Einschränkungen oder manuellem Setup verfügbar. Siehe Databricks-Notebooks-Unterschiede.

Wird mein Cluster automatisch gestartet, wenn ich eine Verbindung mit dem SSH-Tunnel herstellt?

Ja, aber wenn das Starten des Clusters länger dauert als das Verbindungstimeout, schlägt der Verbindungsversuch fehl. Um dies zu verhindern, erhöhen Sie den Wert von Remote.SSH: Connect Timeout aus der Befehlspalette (oder remote.SSH.connectTimeout in settings.json), um die Wahrscheinlichkeit von Timeoutfehlern weiter zu verringern.

Wie kann ich feststellen, ob mein Cluster läuft?

Navigieren Sie in der Benutzeroberfläche des Databricks-Arbeitsbereichs zu Compute , und überprüfen Sie den Status des Clusters. Der Cluster muss "Running " anzeigen, damit die SSH-Verbindung funktioniert.

Wie kann ich meine SSH/IDE-Sitzung trennen?

Sie können eine Sitzung trennen, indem Sie das IDE-Fenster schließen, indem Sie die Option " Trennen " in Ihrer IDE verwenden, ihr SSH-Terminal schließen oder den exit Befehl im Terminal ausführen.

Wie kann ich den Cluster beenden und Gebühren vermeiden, wenn ich nicht arbeite?

Beenden Sie den Cluster sofort über die Arbeitsbereichsbenutzeroberfläche. Navigieren Sie in der Benutzeroberfläche des Databricks-Arbeitsbereichs zu Compute , suchen Sie Ihren Cluster, und klicken Sie auf "Beenden " oder "Beenden".

Legen Sie eine kurze Richtlinie für die automatische Beendigung ihres Clusters über die Arbeitsbereichsbenutzeroberfläche fest. Nachdem Sie die Verbindung getrennt haben, wartet der SSH-Server auf den shutdown-delay Zeitraum (Standard: 10 Minuten), und das Leerlauftimeout des Clusters wird angewendet.

Wie sollte ich dauerhafte Abhängigkeiten behandeln?

Abhängigkeiten, die während einer Sitzung installiert wurden, gehen nach dem Neustart des Clusters verloren. Verwenden Sie beständigen Speicher (/Workspace/Users/<your-username>) für Anforderungen und Setupskripts. Verwenden Sie Clusterbibliotheken oder Initskripts für die Automatisierung.

Welche Authentifizierungsmethoden werden unterstützt?

Die Authentifizierung verwendet die Databricks CLI und die ~/.databrickscfg Profildatei. SSH-Schlüssel werden von databrick Remote Development behandelt.

Kann ich eine Verbindung mit externen Datenbanken oder Diensten aus dem Cluster herstellen?

Ja, solange Ihr Clusternetzwerk ausgehende Verbindungen zulässt und sie über die erforderlichen Bibliotheken verfügen.

Kann ich zusätzliche IDE-Erweiterungen verwenden?

Die meisten Erweiterungen funktionieren, wenn sie in Ihrer Remote-SSH-Sitzung installiert werden, je nach IDE und Cluster. Visual Studio Code installiert standardmäßig keine lokalen Erweiterungen auf Remotehosts. Sie können sie manuell installieren, indem Sie den Erweiterungsbereich öffnen und Ihre lokalen Erweiterungen auf dem Remotehost aktivieren. Sie können Visual Studio Code auch so konfigurieren, dass bestimmte Erweiterungen immer remote installiert werden. Siehe "Herstellen einer Verbindung mit Databricks".

Ja, allerdings müssen Arbeitsbereichsadministratoren die URLs der Marktplätze für VS Code- und Cursor-Erweiterungen freigeben. Die lokalen Computer der Benutzer müssen auch über die Möglichkeit verfügen, auf das Internet zuzugreifen.