Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Von Bedeutung
Der Databricks SSH-Tunnel befindet sich in Der Betaversion.
Mit dem Databricks SSH-Tunnel können Sie Ihre IDE mit Ihren Databricks-Berechnungen verbinden. Es ist einfach einzurichten, ermöglicht es Ihnen, Code interaktiv auf dem Cluster auszuführen und zu debuggen, die Umgebungskonflikte zu reduzieren und den gesamten Code und die Daten in Ihrem Databricks-Arbeitsbereich sicher zu halten.
Anforderungen
Um den SSH-Tunnel zu verwenden, müssen Sie folgendes haben:
- Die Databricks CLI Version 0.269 oder höher muss auf Ihrem lokalen Computer installiert und die Authentifizierung konfiguriert sein. Siehe Installieren.
- Berechnen Sie in Ihrem Databricks-Arbeitsbereich mit dediziertem (einzelnem Benutzer)-Zugriffsmodus. Siehe Dedizierte Berechnungsübersicht.
- Die Berechnung muss Databricks Runtime 17.0 und höher verwenden.
- Unity-Katalog muss aktiviert sein.
- Wenn eine Richtlinie für Computerressourcen vorhanden ist, darf die Ausführung von Aufträgen nicht verhindert werden.
Einrichten des SSH-Tunnels
Richten Sie zunächst den SSH-Tunnel mit dem Befehl "databricks ssh setup " ein. Ersetzen Sie <connection-name> durch den Namen des Tunnels, z. B. my-tunnel.
databricks ssh setup --name <connection-name>
Die CLI fordert Sie auf, einen Cluster auszuwählen, oder Sie können eine Cluster-ID durch Übergeben --cluster <cluster-id>angeben.
Hinweis
Für IntelliJ empfiehlt Databricks, –-auto-start-cluster=false in den Setupbefehl einzubeziehen. Das Starten einer JetBrains-IDE startet automatisch alle Cluster, was zu unbeabsichtigten Berechnungskosten führen kann. Wenn Sie diese Option festlegen, müssen Sie den Cluster im Arbeitsbereich starten, um den SSH-Tunnel zu starten.
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
Installieren Sie für Visual Studio Code die Remote-SSH-Erweiterung. Der Cursor enthält eine Remote-SSH-Erweiterung.
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.Fügen Sie unter Remote.SSH: Standarderweiterungen (oder
remote.SSH.defaultExtensionsinsettings.json) hinzums-Python.Pythonundms-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.connectTimeoutinsettings.json), um die Wahrscheinlichkeit von Timeoutfehlern weiter zu verringern. Das Standardtimeout ist 360.Wählen Sie in der Befehlspalette Remote-SSH: Verbindung mit Host herstellen.
Wählen Sie im Dropdownmenü den Tunnel aus, den Sie im ersten Schritt eingerichtet haben. Die IDE fährt mit der Verbindung in einem neuen Fenster fort.
Hinweis
Wenn der Rechner nicht läuft, wird er gestartet. Wenn es jedoch länger dauert als das Timeout für den Start des Computes, schlägt der SSH-Verbindungsversuch fehl.
Wählen Sie Linux aus, wenn Sie zur Eingabe des Servertyps aufgefordert werden.
Verbinden mit IntelliJ-IDEs
Folgen Sie dem Lernprogramm zur Remoteentwicklung, um die Einrichtung vorzunehmen.
Geben Sie auf dem neuen Verbindungsbildschirm Folgendes ein:
Benutzername:
root<connection-name>
Verbinden mit Terminal
Um eine Verbindung mit Databricks über die Befehlszeile herzustellen, geben Sie dem Befehl den ssh Namen Ihrer Verbindung an, z. B.:
ssh my-tunnel
Projekte öffnen
- Die erste Verbindung öffnet ein leeres IDE-Fenster ohne geöffneten Ordner. Verwenden Sie in Visual Studio Code den Befehl "Ordner öffnen " aus der Befehlspalette , um ein gewünschtes Projekt zu öffnen.
- Verwenden Sie die Arbeitsbereichs-Einhängung (
/Workspace/Users/<your-username>) für beständigen Speicher.
Ausführen von Code (Visual Studio Code)
- Wenn Sie ein Python-Projekt öffnen, kann die Python-Erweiterung virtuelle Umgebungen automatisch erkennen, sie müssen aber trotzdem die richtige aktivieren. Wählen Sie den Befehl "Dolmetscher " aus der Befehlspalette aus, und wählen Sie die Umgebung
pythonEnv-xxxaus. Dies hat Zugriff auf alle integrierten Databricks-Runtime-Bibliotheken oder alles, was Sie global auf dem Cluster installiert haben. - In einigen Fällen kann die Python-Erweiterung virtuelle Umgebungen nicht automatisch erkennen (
venvz. B. wenn Sie einen Ordner öffnen, der nicht als Python-Projekt erkannt werden kann). Um dies zu beheben, öffnen Sie ein Terminal und führen Sieecho $DATABRICKS_VIRTUAL_ENVaus, kopieren Sie dann den Pfad und verwenden Sie ihn im Python: Select Interpreter-Befehl.
Nachdem der venv ausgewählt wurde, können Python-Dateien oder -Notizbücher mit normalen Ausführungs- oder Debugaktionen ausgeführt werden, die von den Python- oder Jupyter-Erweiterungen bereitgestellt werden.
Verwalten von Python-Abhängigkeiten
Die einfachste Möglichkeit zum Installieren der erforderlichen Abhängigkeiten ist die Arbeitsbereichs-UI. Siehe Compute-spezifische Bibliotheken. Bei diesem Ansatz installieren Sie Abhängigkeiten global für den Cluster. Bei jedem Neustart des Clusters müssen Keine Bibliotheken neu installiert werden.
Verwenden Sie jedoch für eine programmatische Einrichtung, die auf ein bestimmtes Projekt zugeschnitten ist, eine Notebook-gebundene Installation.
Projektspezifisches Setupnotizbuch
So verwalten Sie Abhängigkeiten für ein bestimmtes Projekt:
Erstellen Sie eine
setup.ipynbDatei in Ihrem Projekt.Die SSH-CLI erstellt eine Python-Umgebung (
pythonEnv-xxx), die bereits integrierte Databricks-Runtime-Bibliotheken oder Compute-spezifische Bibliotheken enthält. Fügen Sie das Notizbuch an diesepythonEnv-xxxUmgebung an.Verwenden Sie
%pip installBefehle, um Ihre Abhängigkeiten zu installieren:-
%pip install .wenn Siepyproject.tomlhaben (%pip install .<group>um den Umfang einzugrenzen) -
%pip install -r dependencies.txtwenn Sie habendependencies.txt -
%pip install /Volumes/your/wheel.whl(oder/WorkspacePfade) wenn Sie eine benutzerdefinierte Bibliothek als Rad erstellt und hochgeladen haben
%pipBefehle verfügen über Databricks-spezifische Logik mit zusätzlichen Sicherheitsmaßnahmen. Die Logik stellt außerdem sicher, dass Abhängigkeiten für alle Spark-Executorknoten verfügbar sind, nicht nur den Treiberknoten, mit dem Sie verbunden sind. Dadurch können benutzerdefinierte Funktionen (USER-Defined Functions, UDFs) mit benutzerdefinierten Abhängigkeiten aktiviert werden.Weitere Verwendungsbeispiele finden Sie unter Verwalten von Bibliotheken mit
%pipBefehlen.-
Führen Sie dieses Notizbuch jedes Mal aus, wenn Sie eine neue SSH-Sitzung einrichten. Sie müssen Abhängigkeiten nicht erneut installieren, wenn eine vorhandene SSH-Sitzung verworfen und in weniger als 10 Minuten wieder mit dem Cluster verbunden wird. (Die Zeit kann mit -shutdown-delay=10m der Option in Ihrer lokalen SSH-Konfiguration konfiguriert werden.)
Hinweis
Wenn mehrere SSH-Sitzungen gleichzeitig mit demselben Cluster verbunden sind, verwenden sie dieselbe virtuelle Umgebung.
Einschränkungen
Der Databricks SSH-Tunnel hat die folgenden Einschränkungen:
- Die Databricks-Erweiterung für Visual Studio Code und den Databricks SSH-Tunnel ist noch nicht kompatibel und sollte nicht zusammen verwendet werden.
- Alle Git-Ordner , die Sie in Ihrem Arbeitsbereich über die Benutzeroberfläche des Databricks-Arbeitsbereichs erstellt haben, werden nicht als Git-Repository von git CLI- und IDE-Git-Integrationen erkannt, da diese Ordner keine GIT-Metadaten aufweisen. Um dies zu umgehen, lesen Sie Wie verwende ich Git mit dem SSH-Tunnel?.
- Die Home- und Root-Verzeichnisse auf dem Cluster, mit dem Sie eine Verbindung herstellen, werden nicht dauerhaft gespeichert. Alle Inhalte im Cluster bleiben beim Neustart des Clusters nicht erhalten.
Unterschiede bei Databricks-Notizbüchern
Beim Verwenden des SSH-Tunnels gibt es einige Unterschiede in Notebooks:
- Python-Dateien definieren keine Databricks-Globalen (wie
sparkoderdbutils). Sie müssen sie explizit mitfrom 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 -
%sqlZauberbefehl zum Ausführen von SQL-Zellen
- Databricks Globals:
So arbeiten Sie mit Python-Quellnotebooks:
Suchen Sie nach
jupyter.interactiveWindow.cellMarker.codeRegexund setzen Sie es auf:^# COMMAND ----------|^# Databricks notebook source|^(#\\s*%%|#\\s*\\<codecell\\>|#\\s*In\\[\\d*?\\]|#\\s*In\\[ \\])Suchen Sie nach
jupyter.interactiveWindow.cellMarker.defaultund 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
- Stellen Sie sicher, dass Ihr Cluster in der Databricks-Benutzeroberfläche ausgeführt wird und nicht nur angehalten oder gestartet wird.
- Überprüfen Sie, ob der ausgehende Port 22 auf Ihrem Laptop/Netzwerk/VPN offen und erlaubt ist.
- Erhöhen Sie das SSH-Verbindungstimeout in Ihrer IDE. Siehe Verbinden mit Visual Studio Code oder Cursor.
- Wenn Fehler bei der Übereinstimmung zwischen öffentlichem oder privatem Schlüssel auftreten, versuchen Sie, den
~/.databricks/ssh-tunnel-keysOrdner zu löschen. - Wenn Ihnen der Fehler "Remotehostidentifikation hat sich geändert" angezeigt werden, überprüfen Sie die
~/.ssh/known_hosts-Datei und löschen Sie die Einträge, die zu Ihrem Cluster gehören. - Wenn die SSH-Sitzung nach 1 Stunde verworfen wird, ist dies eine bekannte Einschränkung. Informationen finden Sie unter Einschränkungen.
- Es sind nicht mehr als 10 SSH-Verbindungen zu einem einzelnen Cluster zulässig.
CLI-Authentifizierungsfehler
- Bestätigen Sie, dass Ihr Databricks CLI-Profil gültig und authentifiziert ist (
databricks auth login). - Stellen Sie sicher, dass Sie über die richtigen Clusterberechtigungen verfügen, z. B.
CAN MANAGE.
Dateien verschwinden oder die Umgebung wird nach dem Neustart des Clusters zurückgesetzt.
- Nur
/Workspace,/Volumesund/dbfsEinhängepunkte sind persistent. Alle Daten in/home,/rootusw. werden nach einem Neustart gelöscht. - 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?.
Fehler "Kein Git-Repository" oder fehlende Git-Features in IDE
Git funktioniert nur, wenn Sie mit /Workspace/Users/<your-username> dem Terminal klonen. Von einem Web erstellte Ordner verfügen nicht über GIT-Metadaten. Erfahren Sie , wie verwende ich Git mit dem SSH-Tunnel?.
Mein Code funktioniert nicht
- Stellen Sie sicher, dass Sie den richtigen Python-Interpreter auswählen, der Zugriff auf alle Databricks-Runtime-Abhängigkeiten hat.
- Wenn Sie ein Python-Projekt öffnen, kann die Python-Erweiterung virtuelle Umgebungen automatisch erkennen, sie müssen aber trotzdem die richtige aktivieren. Ausführen von Python: Befehl "Dolmetscher auswählen " und "pythonEnv-xxx "-Umgebung auswählen. Er hat Zugriff auf alle integrierten Databricks-Runtime-Bibliotheken oder alles, was Sie global auf dem Cluster installiert haben.
- In einigen Fällen kann die Python-Erweiterung virtuelle Umgebungen nicht automatisch erkennen, z. B. wenn Sie einen Ordner öffnen, der nicht als Python-Projekt erkannt werden kann. Sie können ein Terminal öffnen und ausführen
echo $DATABRICKS_VIRTUAL_ENV, dann den Pfad kopieren und in Python verwenden: Befehl "Dolmetscher auswählen ".
- IPYNB-Notizbücher und
*.pyDatabricks-Notizbücher haben Zugriff auf Databricks-Globals, aber Python-Dateien*.pyhaben keinen Zugriff darauf. Siehe Databricks-Notebooks-Unterschiede.
Ssh-Verbindung kann unter WSL unter Windows nicht eingerichtet werden
Databricks empfiehlt, ssh-Setup direkt unter Windows auszuführen. Wenn Sie es auf der WSL-Seite einrichten, aber dann eine Windows-Version von Visual Studio Code verwenden, werden keine erforderlichen SSH-Konfigurationen gefunden.
Häufig gestellte Fragen
Wie wird mein Code und meine Daten gesichert?
Der gesamte Code wird in Ihrer Databricks Cloud Virtual Private 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, aber der Databricks SSH-Tunnel ist mit jeder IDE mit SSH-Funktionen kompatibel.
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.
Können mehrere Benutzer gleichzeitig auf demselben Cluster entwickeln?
Nein.
Wird mein Cluster automatisch gestartet, wenn ich über SSH-Tunnel eine Verbindung herstellt?
Ja, aber wenn das Starten des Clusters länger dauert als das Verbindungstimeout, schlägt der Verbindungsversuch fehl.
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 SSH-Tunnelverbindungen funktionieren.
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.
Stoppt das Trennen der SSH-Verbindung automatisch meinen Cluster?
Nein, der SSH-Server verfügt über eine konfigurierbare Verzögerung für das Herunterfahren, und er wird eine bestimmte Zeit lang (standardmäßig 10 Minuten) weiterhin im Hintergrund ausgeführt. Dies kann in der SSH-Konfiguration unter ProxyCommand durch Ändern der Option -shutdown-delay geändert werden. Nach Ablauf des Timeouts wird der Server beendet, was die Leerlaufzeit des Clusters auslöst (die Sie während der Clustererstellung konfigurieren).
Wie kann ich den Cluster beenden, um unnötige Gebühren zu vermeiden?
Navigieren Sie in der Benutzeroberfläche des Databricks-Arbeitsbereichs zu Compute , suchen Sie Ihren Cluster, und klicken Sie auf "Beenden " oder "Beenden".
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 vom Databrick SSH-Tunnel verarbeitet.
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".
Wie verwende ich Git mit dem SSH-Tunnel?
Derzeit werden Git-Ordner, die mit der Benutzeroberfläche des Databricks-Arbeitsbereichs erstellt wurden, nicht als Git-Repositorys in IDEs erkannt. Um dies zu umgehen, klonen Sie Repositorys mit der git CLI aus Ihrer SSH-Sitzung in Ihren persistenten Arbeitsbereichsordner.
- Öffnen Sie ein Terminal, und navigieren Sie zu einem gewünschten übergeordneten Verzeichnis (z. B
cd /Workspace/Users/<your-username>. ) - Klonen Sie Ihr Repository in diesem Verzeichnis.
- Öffnen Sie in Visual Studio Code diesen Ordner in einem neuen Fenster, indem Sie
code <repo-name>ausführen oder verwenden Sie die Benutzeroberfläche, um den Ordner in einem neuen Fenster zu öffnen.