Rifiutare esplicitamente le librerie di Python preinstallate per le app Databricks

Questa pagina descrive come rifiutare esplicitamente le librerie di Python preinstallate in un'app Databricks con scalabilità orizzontale, gestire le proprie dipendenze e riattivare le librerie preinstallate in un secondo momento. Il rifiuto esplicito è disponibile solo per le app con scalabilità orizzontale convertite da un'app standard. Vedi Convertire un'app standard per usare il ridimensionamento orizzontale. La scalabilità orizzontale è in versione beta.

Quando si converte un'app standard in un'app con scalabilità orizzontale, Azure Databricks associa l'app convertita alle librerie Python preinstallate in modo che gli import esistenti dell'app continuino a funzionare. Rifiutare esplicitamente di eseguire l'app in un'immagine pulita del sistema operativo di base e dichiarare manualmente ogni libreria.

Disattivare le librerie preinstallate

La disattivazione fa sì che Azure Databricks crei la distribuzione successiva a partire da un'immagine di base pulita del sistema operativo. Le librerie preinstallate non sono più disponibili a meno che non vengano dichiarate in requirements.txt o pyproject.toml.

Per rinunciare:

  1. Nella pagina dei dettagli dell'app fare clic su Modifica.
  2. Nel passaggio Configura deselezionare la casella di controllo Usare le librerie Python preinstallate.
  3. Fai clic su Salva. La distribuzione attualmente in esecuzione non è interessata.
  4. Distribuire di nuovo l'app dalla scheda Distribuzioni . Questa nuova distribuzione si basa sull'immagine pulita del sistema operativo di base.

Le dipendenze possono includere le librerie preinstallate in modo transitivo, quindi non è sempre chiaro quali librerie richiedono direttamente l'app. Individua le librerie mancanti in un'app di test prima di disattivare in produzione:

  1. Creare una nuova app con scalabilità orizzontale. Le nuove app con scalabilità orizzontale sono già eseguite sull'immagine di base pulita del sistema operativo, quindi questo corrisponde al tuo obiettivo successivo all'opt-out.
  2. Distribuisci il codice sorgente della tua app di produzione nell'app di test. Aggiorna requirements.txt (o pyproject.toml) e ridistribuisci finché l'app di test non si avvia, gestisce le richieste e supera i test.
  3. Copia le dichiarazioni finali delle dipendenze nel codice sorgente della tua app in produzione.
  4. Nell'app di produzione, segui i passaggi in Disattivare l'inclusione delle librerie preinstallate e distribuisci il codice sorgente aggiornato.

L'ambiente di produzione continua a essere in esecuzione sull'immagine con le librerie preinstallate finché la nuova distribuzione non supera i controlli di integrità, quindi questo approccio evita tempi di inattività mentre si identificano le dipendenze mancanti nell'app di test.

Risolvere gli errori dopo la rinuncia

Il problema più comune dopo la disattivazione è un ModuleNotFoundError all'avvio dell'app, causato da un framework o una libreria che il codice ha importato implicitamente dall'insieme preinstallato. Per risolvere questo errore:

  1. Aprire la scheda Log nella pagina dei dettagli dell'app.
  2. Trovare il nome del modulo mancante nei log di compilazione o di runtime.
  3. Aggiungere il pacchetto corrispondente a requirements.txt (o pyproject.toml) e ridistribuire.

Una nuova distribuzione sostituisce la distribuzione in esecuzione solo se il processo dell'app rimane in esecuzione per i primi secondi dopo l'avvio. Una distribuzione con opt-out che va immediatamente in crash a causa di un'importazione mancante non subentra mai, e il traffico continua a essere instradato verso la distribuzione precedente funzionante mentre si corregge l'elenco delle dipendenze. Il controllo di avvio è limitato, quindi verificate che l'app sia effettivamente in grado di gestire le richieste dopo aver disattivato questa opzione, anziché fare affidamento sul controllo per individuare distribuzioni non riuscite.

Riattivare le librerie preinstallate

Per tornare alle librerie preinstallate dopo aver rifiutato esplicitamente:

  1. Nella pagina dei dettagli dell'app fare clic su Modifica.
  2. Nel passaggio Configura selezionare la casella di controllo Use preinstalled Python libraries.
  3. Fai clic su Salva.
  4. Distribuire di nuovo l'app dalla scheda Distribuzioni . Questa nuova distribuzione si basa sull'immagine di base con le librerie preinstallate.

requirements.txt e pyproject.toml continuano ad applicarsi, quindi tutte le dichiarazioni esplicite aggiunte durante il periodo di disattivazione vengono mantenute.

Note

La conversione di un'app con scalabilità orizzontale in un'app standard ripristina anche le librerie preinstallate: l'app standard viene ricompilata con esse, indipendentemente dal fatto che tu abbia rifiutato esplicitamente. Se in un secondo momento si converte nuovamente l'app in orizzontale, include le librerie preinstallate fino a quando non si rifiuta nuovamente.