Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Belangrijk
De Databricks SSH-tunnel bevindt zich in de bètaversie.
Met de Databricks SSH-tunnel kunt u uw IDE verbinden met uw Databricks-rekenproces. Het is eenvoudig in te stellen, maakt het mogelijk voor u om code interactief op het cluster uit te voeren en te debuggen, vermindert verschillen tussen omgevingen en houdt alle code en gegevens veilig in uw Databricks-werkruimte.
Requirements
Als u de SSH-tunnel wilt gebruiken, moet u het volgende hebben:
- De Databricks CLI versie 0.269 of hoger is geïnstalleerd op uw lokale computer en authenticatie is geconfigureerd. Zie Installeren.
- Compute in uw Databricks-werkruimte met toegewezen (individuele gebruiker) toegangsmodus. Zie het overzicht van toegewezen rekenkracht.
- De berekening moet Databricks Runtime 17.0 en hoger gebruiken.
- Unity Catalog moet zijn ingeschakeld.
- Als er een rekenbeleid bestaat, mag het de uitvoering van taken niet verbieden.
SSH-tunnel instellen
Stel eerst de SSH-tunnel in met behulp van de opdracht databricks ssh setup . Vervang <connection-name> door de naam voor de tunnel, bijvoorbeeld my-tunnel.
databricks ssh setup --name <connection-name>
De CLI vraagt u om een cluster te kiezen of u kunt een cluster-id opgeven door deze door te geven --cluster <cluster-id>.
Opmerking
Voor IntelliJ raadt Databricks u aan –-auto-start-cluster=false in het opstartcommando op te nemen. Als u een JetBrains IDE start, worden automatisch alle clusters gestart, wat kan leiden tot onbedoelde rekenkosten. Als u deze optie instelt, moet u het cluster in de werkruimte starten om de SSH-tunnel te starten.
Verbinding maken met Databricks
Maak vervolgens verbinding met Databricks met behulp van een IDE of terminal.
Verbinding maken met Visual Studio Code of Cursor
Installeer voor Visual Studio Code de externe SSH-extensie. Cursor bevat een externe SSH-extensie.
Klik in het hoofdmenu van IDE opOpdrachtpalet>. Selecteer Remote-SSH: Instellingen. U kunt ook Voorkeuren selecteren: Gebruikersinstellingen (JSON) openen om rechtstreeks te wijzigen
settings.json.Onder Remote.SSH: Standaardextensies (of
remote.SSH.defaultExtensionsinsettings.json), voegms-Python.Pythonenms-toolsai.jupytertoe.Als u het volgende wijzigt
settings.json:"remote.SSH.defaultExtensions": [ "ms-Python.Python", "ms-toolsai.jupyter" ]Opmerking
Verhoog eventueel de waarde van Remote.SSH: Connect Timeout (of
remote.SSH.connectTimeoutinsettings.json) om de kans op time-outfouten verder te verminderen. De standaardtime-out is 360.Selecteer in het opdrachtpalet de optie Remote-SSH: Verbinding maken met host.
Selecteer in de vervolgkeuzelijst de tunnel die u in de eerste stap hebt ingesteld. De IDE gaat verbinding maken in een nieuw venster.
Opmerking
Als de berekening niet wordt uitgevoerd, wordt deze gestart. Als het echter langer duurt dan de time-out voordat de berekening is gestart, mislukt de SSH-verbindingspoging.
Selecteer Linux wanneer u wordt gevraagd om het servertype.
Verbinding maken met intelliJ IDE's
Volg de zelfstudie voor externe ontwikkeling om de configuratie te starten.
Voer in het nieuwe verbindingsscherm het volgende in:
Gebruikersnaam:
root<connection-name>
Verbinding maken met behulp van terminal
Als u via de opdrachtregel verbinding wilt maken met Databricks, geef de ssh opdracht de naam van uw verbinding op, bijvoorbeeld:
ssh my-tunnel
Open projecten
- Met de initiële verbinding wordt een leeg IDE-venster geopend zonder een geopende map. Gebruik in Visual Studio Code de opdracht Open map vanuit het Opdrachtpalet om een gewenst project te openen.
- Gebruik de werkruimte-montage (
/Workspace/Users/<your-username>) voor permanente opslag.
Code uitvoeren (Visual Studio Code)
- Als u een Python-project opent, kan de Python-extensie automatisch virtuele omgevingen detecteren, maar moet u de juiste omgeving nog steeds handmatig activeren. Selecteer de opdracht Interpreter in het opdrachtenpalet en kies de omgeving
pythonEnv-xxx. Dit heeft toegang tot alle ingebouwde Databricks Runtime-bibliotheken of alles wat u wereldwijd op het cluster hebt geïnstalleerd. - In sommige gevallen kan de Python-extensie niet automatisch virtuele omgevingen detecteren (
venv), bijvoorbeeld wanneer u een map opent die niet kan worden herkend als een Python-project. U kunt dit oplossen door een terminal te openen,echo $DATABRICKS_VIRTUAL_ENVuit te voeren, vervolgens het pad te kopiëren en gebruiken in de opdracht Python: Selecteer Interpreter.
Nadat de venv is geselecteerd, kunnen Python-bestanden of -notebooks worden uitgevoerd met normale uitvoerings- of foutopsporingsacties die worden geleverd door de Python- of Jupyter-extensies.
Python-afhankelijkheden beheren
De eenvoudigste manier om vereiste afhankelijkheden te installeren, is het gebruik van de gebruikersinterface van de werkruimte. Zie bibliotheken met rekenbereik. Met deze aanpak installeert u globaal afhankelijkheden voor het cluster. U hoeft bibliotheken niet telkens opnieuw te installeren wanneer het cluster opnieuw wordt opgestart.
Voor een programmatischere installatie die toegespitst is op een specifiek project, gebruikt u echter een installatie met notebookbereik.
Projectspecifieke installatienotebook
Afhankelijkheden voor een specifiek project beheren:
Maak een
setup.ipynbbestand in uw project.De ssh CLI maakt een Python-omgeving (
pythonEnv-xxx) aan, die al ingebouwde Databricks Runtime-bibliotheken of Compute-scoped libraries bevat. Koppel het notebook aan dezepythonEnv-xxxomgeving.Gebruik
%pip installopdrachten om uw afhankelijkheden te installeren:-
%pip install .als u deze hebtpyproject.toml(%pip install .<group>om het bereik te verkleinen) -
%pip install -r dependencies.txtals udependencies.txt -
%pip install /Volumes/your/wheel.whl(of/Workspacepaden) indien u een aangepaste bibliotheek als een Wheel hebt gebouwd en geüpload.
%pipopdrachten hebben Databricks-specifieke logica met extra beveiligingsmaatregelen. De logica zorgt er ook voor dat afhankelijkheden beschikbaar zijn voor alle Spark-uitvoerdersknooppunten, niet alleen het stuurprogrammaknooppunt waarmee u bent verbonden. Dit maakt door de gebruiker gedefinieerde functies (UDF's) mogelijk met aangepaste afhankelijkheden.Zie Bibliotheken beheren met
%pipopdrachten voor meer gebruiksvoorbeelden.-
Voer dit notebook telkens uit wanneer u een nieuwe SSH-sessie tot stand brengt. U hoeft afhankelijkheden niet opnieuw te installeren als een bestaande ssh-sessie wordt verwijderd en binnen tien minuten opnieuw verbinding maakt met het cluster. (De tijd kan worden geconfigureerd met -shutdown-delay=10m de optie in uw lokale ssh-configuratie.)
Opmerking
Als u meerdere SSH-sessies tegelijk met hetzelfde cluster hebt verbonden, gebruiken ze dezelfde virtuele omgeving.
Beperkingen
De Databricks SSH-tunnel heeft de volgende beperkingen:
- De Databricks-extensie voor Visual Studio Code en de Databricks SSH-tunnel zijn nog niet compatibel en mogen niet samen worden gebruikt.
- Elke Git-map die u in uw werkruimte hebt gemaakt via de gebruikersinterface van de Databricks-werkruimte, wordt niet herkend als een Git-opslagplaats door de Git CLI en IDE git-integraties, omdat deze mappen geen .git-metagegevens bevatten. Zie Hoe gebruik ik Git met de SSH-tunnel om dit te omzeilen.
- De home- en root-koppelingen op het cluster waarmee u verbinding maakt, zijn tijdelijk. Inhoud op het cluster blijft niet behouden wanneer het cluster opnieuw wordt opgestart.
Verschillen tussen Databricks Notebooks
Er zijn enkele verschillen in notebooks bij het gebruik van de SSH-tunnel:
- Python-bestanden definiëren geen globals van Databricks (zoals
sparkofdbutils). U moet ze expliciet importeren metfrom databricks.sdk.runtime import spark. - Voor ipynb-notebooks zijn deze functies beschikbaar:
- Databricks globals:
display,displayHTML,dbutils,table,sql,udf,getArgument,sc,sqlContext,spark -
%sqlmagic-opdracht om SQL-cellen uit te voeren
- Databricks globals:
Werken met Python-bron 'notebooks':
Zoek naar
jupyter.interactiveWindow.cellMarker.codeRegexen stel dit in op:^# COMMAND ----------|^# Databricks notebook source|^(#\\s*%%|#\\s*\\<codecell\\>|#\\s*In\\[\\d*?\\]|#\\s*In\\[ \\])Zoek naar
jupyter.interactiveWindow.cellMarker.defaulten stel dit in op:# COMMAND ----------
Probleemoplossingsproces
Deze sectie bevat informatie over het oplossen van veelvoorkomende problemen.
SSH-verbinding mislukt of er treedt een time-out op
- Zorg ervoor dat uw cluster in werking is in de Databricks-gebruikersinterface en niet alleen gestopt of aan het starten.
- Controleer of uitgaande poort 22 is geopend en toegestaan op uw laptop/netwerk/VPN.
- Verhoog de time-out voor SSH-verbinding in uw IDE. Zie Verbinding maken met Visual Studio Code of Cursor.
- Als u fouten ziet door een mismatch van openbare of privésleutels, probeer dan de
~/.databricks/ssh-tunnel-keysmap te verwijderen. - Als u foutmeldingen 'identificatie van externe host is gewijzigd' ziet, controleert u het
~/.ssh/known_hostsbestand en verwijdert u de vermeldingen die betrekking hebben op uw cluster. - Als de SSH-sessie na 1 uur wordt verwijderd, is dit een bekende beperking. Zie Beperkingen.
- Maximaal 10 SSH-verbindingen zijn toegestaan voor één cluster.
CLI-verificatiefouten
- Controleer of uw Databricks CLI-profiel geldig en geverifieerd is (
databricks auth login). - Zorg ervoor dat u over de juiste clustermachtigingen beschikt, zoals
CAN MANAGE.
Bestanden verdwijnen of de omgeving wordt opnieuw ingesteld nadat het cluster opnieuw is opgestart
- Alleen
/Workspace,/Volumes, en/dbfsmounts zijn permanent. Alle gegevens in/home,/rootenzovoort worden gewist na opnieuw opstarten. - Gebruik clusterbibliotheekbeheer voor permanente afhankelijkheden. Automatiseer indien nodig opnieuw installeren met behulp van init-scripts. Zie Wat zijn init-scripts?
Fout 'Geen Git-opslagplaats' of ontbrekende Git-functies in IDE
Git werkt alleen als u /Workspace/Users/<your-username> kloont met behulp van de terminal. Webmappen hebben geen .git-metagegevens. Zie Hoe gebruik ik Git met de SSH-tunnel?
Mijn code werkt niet
- Zorg ervoor dat u de juiste Python-interpreter selecteert die toegang heeft tot alle Databricks Runtime-afhankelijkheden.
- Als u een Python-project opent, kan de Python-extensie automatisch virtuele omgevingen detecteren, maar moet u de juiste omgeving nog steeds handmatig activeren. Python uitvoeren : de opdracht Interpreter selecteren en pythonEnv-xxx-omgeving kiezen. Het heeft toegang tot alle ingebouwde Databricks Runtime-bibliotheken of alles wat u wereldwijd op het cluster hebt geïnstalleerd.
- In sommige gevallen kan de Python-extensie virtuele omgevingen niet automatisch detecteren, bijvoorbeeld wanneer u een map opent die niet kan worden herkend als een Python-project. U kunt een terminal openen en
echo $DATABRICKS_VIRTUAL_ENVuitvoeren, vervolgens het pad kopiëren en gebruiken in de opdracht Python: Interpreter selecteren.
- IPYNB-notebooks en
*.pyDatabricks-notebooks hebben toegang tot databricks globals, maar Python-bestanden*.pyniet. Zie de verschillen in Databricks Notebooks.
Kan ssh-verbinding niet instellen in Windows onder WSL
Databricks raadt aan om ssh-instellingen rechtstreeks in Windows uit te voeren. Als u deze instelt aan de WSL-zijde, maar vervolgens een Windows-versie van Visual Studio Code gebruikt, worden er geen benodigde SSH-configuraties gevonden.
Veelgestelde vragen
Hoe worden mijn code en gegevens beveiligd?
Alle code wordt uitgevoerd in uw Databricks-cloud voor virtuele privécloud (VPC). Er blijven geen gegevens of code achter in uw beveiligde omgeving. SSH-verkeer is volledig versleuteld.
Welke IDE's worden ondersteund?
Visual Studio Code en Cursor worden officieel ondersteund, maar de Databricks SSH-tunnel is compatibel met elke IDE met SSH-mogelijkheden.
Zijn alle Databricks-notebookfuncties beschikbaar via de IDE?
Sommige functies, zoals display(), dbutilsen %sql zijn beschikbaar met beperkingen of handmatige installatie. Zie de verschillen in Databricks Notebooks.
Kunnen meerdere gebruikers tegelijkertijd op hetzelfde cluster ontwikkelen?
Nee.
Wordt mijn cluster automatisch gestart wanneer ik verbinding maak via SSH Tunnel?
Ja, maar als het langer duurt om het cluster te starten dan de time-out voor de verbinding, mislukt de verbindingspoging.
Hoe weet ik of mijn cluster draait?
Navigeer naar Compute in de gebruikersinterface van de Databricks-werkruimte en controleer de status van het cluster. Het cluster moet Draait weergeven zodat SSH-tunnelverbindingen kunnen werken.
Hoe verbreek ik de verbinding met mijn SSH/IDE-sessie?
U kunt een sessie verbreken door het IDE-venster te sluiten met behulp van de optie Verbinding verbreken in uw IDE, uw SSH-terminal te sluiten of de exit opdracht uit te voeren in de terminal.
Beëindigt het verbreken van een SSH-verbinding automatisch mijn cluster?
Nee, de ssh-server heeft een configureerbare afsluitvertraging en blijft gedurende een opgegeven tijd op de achtergrond actief (standaard kan 10m worden gewijzigd in de ssh-configuratie ProxyCommand door de optie te wijzigen -shutdown-delay ). Nadat de time-out op de server is beëindigd, wordt de time-out voor inactiviteit van het cluster geactiveerd (die u tijdens het maken van het cluster configureert).
Hoe stop ik het cluster om onnodige kosten te voorkomen?
Navigeer naar Compute in de gebruikersinterface van de Databricks-werkruimte, zoek uw cluster en klik op Beëindigen of Stoppen.
Hoe kan ik permanente afhankelijkheden verwerken?
Afhankelijkheden die tijdens een sessie zijn geïnstalleerd, gaan verloren nadat het cluster opnieuw is opgestart. Gebruik permanente opslag (/Workspace/Users/<your-username>) voor vereisten en installatiescripts. Gebruik clusterbibliotheken of init-scripts voor automatisering.
Welke verificatiemethoden worden ondersteund?
Verificatie maakt gebruik van de Databricks CLI en uw ~/.databrickscfg profielbestand. SSH-sleutels worden verwerkt door de Databrick SSH-tunnel.
Kan ik verbinding maken met externe databases of services vanuit het cluster?
Ja, zolang uw clusternetwerken uitgaande verbindingen toestaat en u over de benodigde bibliotheken beschikt.
Kan ik extra IDE-extensies gebruiken?
De meeste extensies werken wanneer ze zijn geïnstalleerd in uw externe SSH-sessie, afhankelijk van uw IDE en cluster. Visual Studio Code installeert standaard geen lokale extensies op externe hosts. U kunt ze handmatig installeren door het deelvenster extensies te openen en uw lokale extensies in te schakelen op de externe host. U kunt Visual Studio Code ook zo configureren dat bepaalde extensies altijd extern worden geïnstalleerd. Zie Verbinding maken met Databricks.
Hoe gebruik ik Git met de SSH-tunnel?
Momenteel worden Git-mappen die zijn gemaakt met de gebruikersinterface van de Databricks-werkruimte, niet herkend als Git-opslagplaatsen in IDE's. U kunt dit omzeilen door opslagplaatsen te klonen met behulp van de Git CLI vanuit uw SSH-sessie in uw map met permanente werkruimten:
- Open een terminal en navigeer naar een gewenste bovenliggende map (bijvoorbeeld
cd /Workspace/Users/<your-username>) - Kloon uw opslagplaats in die map.
- Open deze map in Visual Studio Code in een nieuw venster door
code <repo-name>uit te voeren of open de map in een nieuw venster met behulp van de gebruikersinterface.