Usare i moduli Python e R

Questo articolo descrive come usare percorsi relativi per importare moduli Python e R personalizzati archiviati nei file dell'area di lavoro insieme ai notebook di Databricks. I file dell'area di lavoro possono facilitare cicli di vita di sviluppo più stretti, consentendo di modularizzare il codice, convertire i comandi %run in istruzioni di importazione e effettuare il refactoring dei file della rotellina Python in moduli con co-controllo delle versioni. È anche possibile usare il terminale Web databricks predefinito per testare il codice.

Nota

In Databricks Runtime 14.0 e versioni successive, la directory di lavoro corrente predefinita (CWD) per il codice eseguito in locale è la directory contenente il notebook o lo script in esecuzione. Si tratta di una modifica del comportamento da Databricks Runtime 13.3 LTS e versioni successive. Vedere Che cos'è la directory di lavoro corrente predefinita?.

Importare moduli Python e R

Importante

In Databricks Runtime 13.3 LTS e versioni successive, le directory aggiunte alle directory Python sys.patho strutturate come pacchetti Python vengono distribuite automaticamente a tutti gli executor nel cluster. In Databricks Runtime 12.2 LTS e versioni successive le librerie aggiunte a sys.path devono essere installate in modo esplicito negli executor.

In Databricks Runtime 11.3 LTS e versioni successive la directory di lavoro corrente del notebook viene aggiunta automaticamente al percorso Python. Se si usano cartelle Git, viene aggiunta la directory del repository radice.

Per importare moduli da un'altra directory, è necessario aggiungere la directory contenente il modulo a sys.path. È possibile specificare directory usando un percorso relativo, come nell'esempio seguente:

import sys
import os
sys.path.append(os.path.abspath('..'))

Le funzioni vengono importate da un modulo archiviato nei file dell'area di lavoro esattamente come si farebbe da un modulo salvato come libreria cluster o libreria con ambito notebook:

Python

from sample import power
power.powerOfTwo(3)

R

source("sample.R")
power.powerOfTwo(3)

Importante

Quando si usa un'istruzione import , Databricks segue una precedenza impostata se esistono più librerie con lo stesso nome. Vedere Precedenza della libreria Python.

Caricamento automatico per i moduli Python

Se si modificano più file durante lo sviluppo di codice Python, è possibile usare i comandi seguenti in qualsiasi cella del notebook o file Python per forzare il ricaricamento di tutti i moduli:

%load_ext autoreload
%autoreload 2

Si noti che il caricamento automatico funziona solo sul driver e non ricarica il codice nell'executor per le funzioni definite dall'utente.

Effettuare il refactoring del codice

Una procedura consigliata per lo sviluppo di codice consiste nel modularizzare il codice in modo che possa essere facilmente riutilizzato. È possibile creare file Python personalizzati con file dell'area di lavoro e rendere disponibile il codice in tali file per un notebook usando l'istruzione import .

Per effettuare il refactoring del codice del notebook in file riutilizzabili:

  1. Creare un nuovo file di codice sorgente per il codice.
  2. Aggiungere istruzioni di importazione Python al notebook per rendere disponibile il codice nel nuovo file per il notebook.

Eseguire la migrazione da %run comandi

Se si usano %run comandi per rendere disponibili funzioni Python o R in un notebook in un altro notebook o si installano file personalizzati in un cluster, è consigliabile includere tali moduli personalizzati .whl come file dell'area di lavoro. In questo modo, è possibile mantenere sincronizzati i notebook e altri moduli di codice, assicurandosi che il notebook usi sempre la versione corretta.

%run I comandi consentono di includere un notebook all'interno di un altro e vengono spesso usati per rendere disponibile il codice Python o R di supporto per un notebook. In questo esempio, un notebook denominato power.py include il codice seguente.

# This code is in a notebook named "power.py".
def n_to_mth(n,m):
  print(n, "to the", m, "th power is", n**m)

È quindi possibile rendere le funzioni definite in power.py disponibili per un notebook diverso con un %run comando:

# This notebook uses a %run command to access the code in "power.py".
%run ./power
n_to_mth(3, 4)

Usando i file dell'area di lavoro, è possibile importare direttamente il modulo che contiene il codice Python ed eseguire la funzione.

from power import n_to_mth
n_to_mth(3, 4)

Effettuare il refactoring dei file Python .whl nelle librerie relative

È possibile installare file personalizzati .whl in un cluster e quindi importarli in un notebook collegato a tale cluster. Per il codice che viene aggiornato di frequente, questo processo potrebbe essere complesso e soggetto a errori. I file dell'area di lavoro consentono di mantenere questi file Python nella stessa directory con i notebook che usano il codice, assicurando che il notebook usi sempre la versione corretta.

Per altre informazioni sulla creazione di pacchetti di progetti Python, vedere questa esercitazione.

Usare il terminale Web di Azure Databricks per i test

È possibile usare il terminale Web di Azure Databricks per testare le modifiche apportate al codice Python o R senza dover importare il file in un notebook ed eseguire il notebook.

  1. Aprire il terminale Web.
  2. Passare alla directory : cd /Workspace/Users/<path-to-directory>/.
  3. Eseguire il file Python o R: python file_name.py o Rscript file_name.r.