Sviluppo remoto di Databricks

Importante

Lo sviluppo remoto è in versione beta.

Databricks Remote Development consente di accedere all'area di lavoro ed eseguire in modo interattivo i carichi di lavoro nelle risorse di calcolo di Databricks dagli IDE usando un tunnel SSH. È semplice configurare, eliminare la necessità di gestione dell'ambiente e mantenere tutto il codice e i dati protetti all'interno dell'area di lavoro di Databricks.

Requisiti

Per usare lo sviluppo remoto, è necessario disporre di:

  • Interfaccia della riga di comando di Databricks versione 0.269 o successiva installata nel computer locale e configurata l'autenticazione. Vedere Installare.
  • Un cluster dedicato (utente singolo) che esegue Databricks Runtime 17.0 o versione successiva. Consulta Panoramica del calcolo dedicato. In aggiunta:
    • Il catalogo unity deve essere abilitato.
    • Se esiste una politica di calcolo, non deve vietare l'esecuzione dei processi.

Configurare la connessione SSH

Prima di tutto, impostare il tunnel SSH utilizzando il comando databricks ssh setup. Sostituire <connection-name> con il nome della connessione, my-connectionad esempio .

databricks ssh setup --name <connection-name>

L'interfaccia della riga di comando richiede di selezionare un cluster. È anche possibile specificarne uno direttamente con --cluster <cluster-id>:

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

Annotazioni

Per gli utenti di IntelliJ, Databricks consiglia di aggiungere --auto-start-cluster=false al comando di installazione e avviare manualmente il cluster prima della connessione. Ciò è dovuto al fatto che gli IDE JetBrains avviano tutti i cluster configurati all'avvio, causando costi di calcolo imprevisti.

Connettersi a Databricks

Connettersi quindi a Databricks usando un IDE o un terminale.

Connettersi utilizzando Visual Studio Code o Cursor

  1. Per Visual Studio Code, installare l'estensione Remote SSH. Il cursore include un'estensione SSH remota per impostazione predefinita.

  2. Nel menu principale dell'IDE fare clic su Visualizza>riquadro comandi. Selezionare Remote-SSH: Settings (Remote-SSH: Impostazioni). In alternativa, selezionare Preferenze: aprire Impostazioni utente (JSON) per modificare settings.json direttamente.

  3. In Remote.SSH: Estensioni predefinite (o remote.SSH.defaultExtensions in settings.json) aggiungere ms-Python.Python e ms-toolsai.jupyter.

    Se si sta modificando settings.json:

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

    Annotazioni

    Facoltativamente, aumentare il valore di Remote.SSH: Connect Timeout (o remote.SSH.connectTimeout in settings.json) per ridurre ulteriormente la probabilità di errori di timeout. Il timeout predefinito è 360.

  4. Nel riquadro comandi selezionare Remote-SSH: Connect to Host (Remote-SSH: Connetti all'host).

  5. Nell'elenco a discesa selezionare la connessione configurata nel primo passaggio. L'IDE procede per la connessione in una nuova finestra.

Connettersi con gli IDE IntelliJ

  1. Segui il tutorial sul server remoto per impostare.
  2. Nella nuova schermata di connessione immettere:
    • Nome utente: root
    • Host: <connection-name>

Connettersi tramite terminale

ssh <connection-name>

Aprire progetti

Dopo la connessione, usare Apri cartella dal riquadro comandi e passare a /Workspace/Users/<your-username>.

Annotazioni

I file in /Workspace, /Volumese /dbfs vengono mantenuti tra i riavvii del cluster. I file in /home, /roote altri percorsi locali sono temporanei e persi al riavvio.

Esegui codice (Visual Studio Code o cursore)

Per eseguire il codice usando lo sviluppo remoto, è necessario assicurarsi che l'ambiente virtuale Databricks sia configurato. Questo ambiente include tutte le librerie DBR predefinite e le librerie con ambito di calcolo.

  1. Eseguire echo $DATABRICKS_VIRTUAL_ENV da un terminale all'interno dell'IDE.

    Output di esempio: /local_disk0/.ephemeral_nfs/envs/pythonEnv-xxx/bin/python

  2. Aprire il riquadro comandi e scegliere Python: Selezionare interprete. Incollare l'output riportato sopra.

  3. Aprire un nuovo terminale e l'ambiente virtuale deve essere attivato automaticamente.

  4. Per eseguire un notebook Jupyter, assicurati che l'ambiente virtuale sia selezionato come *kernel*. Fare clic su Seleziona kernel nell'angolo in alto a destra del notebook.

File Python e notebook .ipynb possono essere eseguiti e sottoposti a debug usando le estensioni standard Python e Jupyter.

Gestire le dipendenze Python

Le dipendenze di Python possono essere gestite a livello globale del cluster o per progetti singoli utilizzando notebook.

Installare le dipendenze tramite l'interfaccia utente dell'area di lavoro in Librerie > di calcolo. Questi elementi vengono mantenuti tra i riavvii del cluster e sono disponibili in pythonEnv-xxx. Consultare Librerie cluster.

configurazione del notebook specifica di Project

Per le dipendenze con ambito progetto, eseguire un notebook contenente %pip install i comandi all'inizio di ogni sessione:

# 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 I comandi includono protezioni specifiche di Databricks e propagano le dipendenze ai nodi di esecuzione di Spark. Ciò consente funzioni definite dall'utente con dipendenze personalizzate.

Per altri esempi, vedere Gestire le librerie con %pip i comandi.

Non è necessario eseguire nuovamente il notebook se la sessione si riconnette entro 10 minuti. Questa operazione è configurabile usando -shutdown-delay nella configurazione SSH.

Annotazioni

Più sessioni SSH nello stesso cluster condividono un ambiente virtuale.

Limitazioni

Databricks Remote Development presenta le limitazioni seguenti:

  • I cluster condivisi con più utenti e serverless non sono ancora supportati.
  • L'estensione Databricks per Visual Studio Code e Sviluppo remoto non è ancora compatibile e non deve essere usata insieme.
  • I file modificati all'esterno di /Workspace, /Volumes e /dbfs vengono persi al riavvio del cluster.
  • È consentito un massimo di 10 connessioni SSH per ogni cluster.
  • Le sessioni inattive potrebbero terminare dopo 1 ora.

Differenze tra notebook di Databricks

Esistono alcune differenze nei notebook quando si usa lo sviluppo remoto:

  • I file Python non definiscono nessuna globalità di Databricks (ad esempio spark o dbutils). È necessario importarli in modo esplicito con from databricks.sdk.runtime import spark.
  • Per i notebook ipynb, sono disponibili queste funzionalità:
    • Databricks globals: display, displayHTML, dbutils, table, sql, udf, getArgument, sc, sqlContext, spark
    • %sql comando magico per eseguire le celle SQL

Per lavorare con i notebook sorgente Python:

  • Cercare jupyter.interactiveWindow.cellMarker.codeRegex e impostarlo su:

    ^# COMMAND ----------|^# Databricks notebook source|^(#\\s*%%|#\\s*\\<codecell\\>|#\\s*In\\[\\d*?\\]|#\\s*In\\[ \\])
    
  • Cercare jupyter.interactiveWindow.cellMarker.default e impostarlo su:

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

Risoluzione dei problemi

Questa sezione contiene informazioni sulla risoluzione dei problemi comuni.

Connessione SSH non riuscita o timeout

  • Verificare che il cluster sia in esecuzione nell'interfaccia utente dell'area di lavoro.
  • Verificare che la porta in uscita 22 sia aperta e consentita nel computer portatile, nella rete e nella VPN.
  • Aumentare il timeout SSH. Consulta Connettersi utilizzando Visual Studio Code o Cursor.
  • Per gli errori di mancata corrispondenza delle chiavi, eliminare ~/.databricks/ssh-tunnel-keys ed eseguire databricks ssh setupdi nuovo .
  • Per gli errori di "identificazione host remota modificata", controllare il ~/.ssh/known_hosts file ed eliminare le voci correlate al cluster.
  • Le sessioni SSH possono essere interrotte dopo 1 ora e non è possibile stabilire più di 10 connessioni SSH a un singolo cluster. Vedere Limitazioni.

Errori di autenticazione CLI

  • Verifica che il profilo CLI di Databricks sia valido utilizzando databricks auth login.
  • Verificare di disporre delle CAN MANAGE autorizzazioni per il cluster.

Il codice non funziona

I file scompaiono o reimpostano l'ambiente dopo il riavvio del cluster

  • I file nei montaggi /Workspace, /Volumes, e /dbfs persistono tra i riavvii del cluster. I file in /home, /roote altri percorsi locali sono temporanei e persi al riavvio.
  • Usare la gestione delle librerie cluster per le dipendenze persistenti. Automatizzare le reinstallazioni usando script init, se necessario. Consulta Che cosa sono gli script init?.

L'installazione di SSH non riesce in Windows (WSL)

Eseguire databricks ssh setup direttamente in Windows, non in WSL. L'istanza di VS Code Windows non riesce a trovare le configurazioni SSH create sul lato WSL.

Domande frequenti

In che modo lo sviluppo remoto è diverso da Databricks Connect?

Databricks Connect consente di scrivere codice usando le API Spark ed eseguirle in modalità remota nel calcolo di Databricks anziché nella sessione Spark locale. L'estensione databricks Visual Studio Code usa Databricks Connect per fornire il debug predefinito del codice utente in Databricks.

Sviluppo remoto consente di accedere all'area di lavoro dall'IDE e spostare l'intero ambiente di sviluppo nel cluster, Python, kernel e tutte le esecuzioni in Databricks con accesso completo alle risorse del cluster.

Come vengono protetti il codice e i dati?

Tutto il codice viene eseguito all'interno del cloud VPC di Databricks. Nessun dato o codice lascia l'ambiente sicuro. Il traffico SSH è completamente crittografato.

Quali IDE sono supportati?

Visual Studio Code e Cursor sono ufficialmente supportati. Qualsiasi IDE con funzionalità SSH è compatibile, ma vengono testati solo VS Code e Cursor.

Tutte le funzionalità del notebook di Databricks sono disponibili nell'IDE?

Alcune funzionalità, display()ad esempio , dbutilse %sql sono disponibili con limitazioni o configurazione manuale. Vedere Differenze tra i notebook di Databricks.

Il cluster verrà avviato automaticamente quando ci si connette usando il tunnel SSH?

Sì, ma se l'avvio del cluster richiede più tempo rispetto al timeout della connessione, il tentativo di connessione avrà esito negativo. Per evitare questo problema, aumentare il valore di Remote.SSH: Connetti timeout dal riquadro comandi (o remote.SSH.connectTimeout in settings.json) per ridurre ulteriormente la probabilità di errori di timeout.

Come posso sapere se il mio cluster è in esecuzione?

Passare a Calcolo nell'interfaccia utente dell'area di lavoro di Databricks e controllare lo stato del cluster. Per consentire il corretto funzionamento della connessione SSH, il cluster deve visualizzare Running.

Come si disconnette la sessione SSH/IDE?

È possibile disconnettere una sessione chiudendo la finestra dell'IDE, usando l'opzione Disconnetti nell'IDE, chiudendo il terminale SSH o eseguendo il exit comando nel terminale.

Come arrestare il cluster ed evitare addebiti quando non funziona?

Per arrestare immediatamente, terminate il cluster dall'interfaccia utente dell'area di lavoro. Passare a Calcolo nell'interfaccia utente dell'area di lavoro di Databricks, individuare il cluster e fare clic su Termina o Arresta.

Impostare un breve criterio di terminazione automatica nel cluster dall'interfaccia utente dell'area di lavoro. Dopo la disconnessione, il server SSH attende il shutdown-delay periodo (predefinito: 10 minuti), quindi si applica il timeout di inattività del cluster.

Come gestire le dipendenze persistenti?

Le dipendenze installate durante una sessione vengono perse dopo il riavvio del cluster. Usare l'archiviazione permanente (/Workspace/Users/<your-username>) per i requisiti e gli script di installazione. Usare librerie cluster o script init per l'automazione.

Quali metodi di autenticazione sono supportati?

L'autenticazione usa l'interfaccia della riga di comando di Databricks e il file dei profili ~/.databrickscfg. Le chiavi SSH vengono gestite dallo sviluppo remoto di Databrick.

È possibile connettersi a database o servizi esterni dal cluster?

Sì, purché la rete del cluster consenta le connessioni in uscita e le librerie necessarie.

È possibile usare estensioni IDE aggiuntive?

La maggior parte delle estensioni funziona quando viene installata all'interno della sessione SSH remota, a seconda dell'IDE e del cluster. Visual Studio Code per impostazione predefinita non installa le estensioni locali in host remoti. È possibile installarli manualmente aprendo il pannello delle estensioni e abilitando le estensioni locali nell'host remoto. È anche possibile configurare Visual Studio Code per installare sempre determinate estensioni in modalità remota. Vedere Connettersi a Databricks.

Sì, tuttavia gli amministratori dell'area di lavoro devono consentire l'accesso agli URL dei marketplace delle estensioni di VS Code e Cursor. Anche i computer locali degli utenti devono avere la possibilità di accedere a Internet.