Informazioni di riferimento sulle utilità di Databricks (dbutils
)
Questo articolo contiene informazioni di riferimento per le utilità di Databricks (dbutils
). Le utilità dbutils
sono disponibili nei notebook Python, R e Scala. È possibile usare le utilità per:
- Usare file e archiviazione di oggetti in modo efficiente.
- Usare i segreti.
Come fare a: elencare le utilità, elencare i comandi, visualizzare l’aiuto online ai comandi
Utilità: dati, fs, processi, libreria, notebook, segreti, widget, libreria API utilità
Elencare le utilità disponibili
Per elencare le utilità disponibili con a una breve descrizione di ogni utilità, eseguire dbutils.help()
per Python o Scala.
In questo esempio vengono elencati i comandi disponibili per le utilità di Databricks.
Python
dbutils.help()
Scala
dbutils.help()
This module provides various utilities for users to interact with the rest of Databricks.
credentials: DatabricksCredentialUtils -> Utilities for interacting with credentials within notebooks
data: DataUtils -> Utilities for understanding and interacting with datasets (EXPERIMENTAL)
fs: DbfsUtils -> Manipulates the Databricks filesystem (DBFS) from the console
jobs: JobsUtils -> Utilities for leveraging jobs features
library: LibraryUtils -> Utilities for session isolated libraries
meta: MetaUtils -> Methods to hook into the compiler (EXPERIMENTAL)
notebook: NotebookUtils -> Utilities for the control flow of a notebook (EXPERIMENTAL)
preview: Preview -> Utilities under preview category
secrets: SecretUtils -> Provides utilities for leveraging secrets within notebooks
widgets: WidgetsUtils -> Methods to create and get bound value of input widgets inside notebooks
Elencare i comandi disponibili per un'utilità
Per elencare i comandi disponibili per un'utilità con a una breve descrizione di ogni comando, eseguire .help()
dopo il nome programmatico dell'utilità.
In questo esempio vengono elencati i comandi disponibili per le utilità DBFS (Databricks File System).
Python
dbutils.fs.help()
R
dbutils.fs.help()
Scala
dbutils.fs.help()
dbutils.fs provides utilities for working with FileSystems. Most methods in this package can take either a DBFS path (e.g., "/foo" or "dbfs:/foo"), or another FileSystem URI. For more info about a method, use dbutils.fs.help("methodName"). In notebooks, you can also use the %fs shorthand to access DBFS. The %fs shorthand maps straightforwardly onto dbutils calls. For example, "%fs head --maxBytes=10000 /file/path" translates into "dbutils.fs.head("/file/path", maxBytes = 10000)".
fsutils
cp(from: String, to: String, recurse: boolean = false): boolean -> Copies a file or directory, possibly across FileSystems
head(file: String, maxBytes: int = 65536): String -> Returns up to the first 'maxBytes' bytes of the given file as a String encoded in UTF-8
ls(dir: String): Seq -> Lists the contents of a directory
mkdirs(dir: String): boolean -> Creates the given directory if it does not exist, also creating any necessary parent directories
mv(from: String, to: String, recurse: boolean = false): boolean -> Moves a file or directory, possibly across FileSystems
put(file: String, contents: String, overwrite: boolean = false): boolean -> Writes the given String out to a file, encoded in UTF-8
rm(dir: String, recurse: boolean = false): boolean -> Removes a file or directory
mount
mount(source: String, mountPoint: String, encryptionType: String = "", owner: String = null, extraConfigs: Map = Map.empty[String, String]): boolean -> Mounts the given source directory into DBFS at the given mount point
mounts: Seq -> Displays information about what is mounted within DBFS
refreshMounts: boolean -> Forces all machines in this cluster to refresh their mount cache, ensuring they receive the most recent information
unmount(mountPoint: String): boolean -> Deletes a DBFS mount point
updateMount(source: String, mountPoint: String, encryptionType: String = "", owner: String = null, extraConfigs: Map = Map.empty[String, String]): boolean -> Similar to mount(), but updates an existing mount point instead of creating a new one
Visualizzare l’aiuto online per un comando
Per visualizzare l’aiuto online per un comando, eseguire .help("<command-name>")
dopo il nome del comando.
In questo esempio viene mostrato l’aiuto online per il comando di copia DBFS.
Python
dbutils.fs.help("cp")
R
dbutils.fs.help("cp")
Scala
dbutils.fs.help("cp")
/**
* Copies a file or directory, possibly across FileSystems.
*
* Example: cp("/mnt/my-folder/a", "dbfs:/a/b")
*
* @param from FileSystem URI of the source file or directory
* @param to FileSystem URI of the destination file or directory
* @param recurse if true, all files and directories will be recursively copied
* @return true if all files were successfully copied
*/
cp(from: java.lang.String, to: java.lang.String, recurse: boolean = false): boolean
Utilità dati (dbutils.data)
Importante
Questa funzionalità è disponibile in anteprima pubblica.
Nota
Disponibile in Databricks Runtime 9.0 e versioni successive.
Comandi: riepiloga
L'utilità dati consente di comprendere e interpretare i set di dati. Per elencare i comandi disponibili, eseguire dbutils.data.help()
.
dbutils.data provides utilities for understanding and interpreting datasets. This module is currently in preview and may be unstable. For more info about a method, use dbutils.data.help("methodName").
summarize(df: Object, precise: boolean): void -> Summarize a Spark DataFrame and visualize the statistics to get quick insights
comando riepiloga (dbutils.data.summarize)
Calcola e visualizza statistiche di riepilogo di un DataFrame Apache Spark o di un DataFrame pandas. Questo comando è disponibile per Python, Scala e R.
Questo comando analizza il contenuto completo del DataFrame. L'esecuzione di questo comando per DataFrame di grandi dimensioni può essere molto costosa.
Per visualizzare l’aiuto online per questo comando, eseguire dbutils.data.help("summarize")
.
In Databricks Runtime 10.4 LTS e versioni successive è possibile usare il parametro precise
aggiuntivo per regolare la precisione delle statistiche calcolate.
Nota
Questa funzionalità è disponibile in anteprima pubblica.
- Se
precise
è impostato su false (impostazione predefinita), alcune statistiche restituite includono approssimazioni per ridurre il tempo di esecuzione.- Il numero di diversi valori per le colonne di categoria può avere un errore relativo del 5% circa per le colonne a cardinalità elevata.
- Il conteggio dei valori frequenti può avere un errore fino allo 0,01% quando il numero dei valori distinti è maggiore di 10000.
- Gli istogrammi e le stime percentili possono avere un errore fino allo 0,01% rispetto al numero totale di righe.
- Se
precise
è impostato su true, le statistiche vengono calcolate con una precisione maggiore. Tutte le statistiche ad eccezione degli istogrammi e dei percentili per le colonne numeriche sono ora esatte.- Gli istogrammi e le stime percentili possono avere un errore fino allo 0,0001% rispetto al numero totale di righe.
Il tooltip nella parte superiore dell'output di riepilogo dei dati indica la modalità di esecuzione corrente.
In questo esempio vengono visualizzate statistiche di riepilogo di un DataFrame Apache Spark con approssimazioni abilitate per impostazione predefinita. Per visualizzare i risultati, eseguire questo comando in un notebook. Questo esempio è basato su set di dati di esempio.
Python
df = spark.read.format('csv').load(
'/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv',
header=True,
inferSchema=True
)
dbutils.data.summarize(df)
R
df <- read.df("/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv", source = "csv", header="true", inferSchema = "true")
dbutils.data.summarize(df)
Scala
val df = spark.read.format("csv")
.option("inferSchema", "true")
.option("header", "true")
.load("/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv")
dbutils.data.summarize(df)
Si noti che la visualizzazione usa la notazione del sistema internazionale di misura per rendere in modo conciso di valori numerici inferiori a 0,01 o superiori a 10000. Ad esempio, il valore numerico 1.25e-15
verrà reso con 1.25f
. Un'eccezione: la visualizzazione usa "B
" per 1.0e9
(giga) anziché "G
".
Utilità file system (dbutils.fs)
Avviso
L'implementazione Python di tutti i metodi dbutils.fs
usa snake_case
anziché camelCase
per la formattazione delle parole chiave.
Ad esempio: mentre dbutils.fs.help()
visualizza l'opzione extraConfigs
per dbutils.fs.mount()
, in Python si userà la parola chiave extra_configs
.
Comandi: cp, head, ls, mkdirs, mount, mounts, mv, put, refreshMounts, rm, unmount, updateMount
L'utilità file system consente di accedere a Che cos'è DBFS?, semplificando l'uso di Azure Databricks come file system.
Nei notebook è possibile usare anche il comando magic %fs
per accedere a DBFS. Ad esempio, %fs ls /Volumes/main/default/my-volume/
è identico a dbutils.fs.ls("/Volumes/main/default/my-volume/")
. Vedere i comandi magic.
Per elencare i comandi disponibili, eseguire dbutils.fs.help()
.
dbutils.fs provides utilities for working with FileSystems. Most methods in this package can take either a DBFS path (e.g., "/foo" or "dbfs:/foo"), or another FileSystem URI. For more info about a method, use dbutils.fs.help("methodName"). In notebooks, you can also use the %fs shorthand to access DBFS. The %fs shorthand maps straightforwardly onto dbutils calls. For example, "%fs head --maxBytes=10000 /file/path" translates into "dbutils.fs.head("/file/path", maxBytes = 10000)".
fsutils
cp(from: String, to: String, recurse: boolean = false): boolean -> Copies a file or directory, possibly across FileSystems
head(file: String, maxBytes: int = 65536): String -> Returns up to the first 'maxBytes' bytes of the given file as a String encoded in UTF-8
ls(dir: String): Seq -> Lists the contents of a directory
mkdirs(dir: String): boolean -> Creates the given directory if it does not exist, also creating any necessary parent directories
mv(from: String, to: String, recurse: boolean = false): boolean -> Moves a file or directory, possibly across FileSystems
put(file: String, contents: String, overwrite: boolean = false): boolean -> Writes the given String out to a file, encoded in UTF-8
rm(dir: String, recurse: boolean = false): boolean -> Removes a file or directory
mount
mount(source: String, mountPoint: String, encryptionType: String = "", owner: String = null, extraConfigs: Map = Map.empty[String, String]): boolean -> Mounts the given source directory into DBFS at the given mount point
mounts: Seq -> Displays information about what is mounted within DBFS
refreshMounts: boolean -> Forces all machines in this cluster to refresh their mount cache, ensuring they receive the most recent information
unmount(mountPoint: String): boolean -> Deletes a DBFS mount point
updateMount(source: String, mountPoint: String, encryptionType: String = "", owner: String = null, extraConfigs: Map = Map.empty[String, String]): boolean -> Similar to mount(), but updates an existing mount point instead of creating a new one
Comando cp (dbutils.fs.cp)
Copia un file o una directory, possibilmente tra file system.
Per visualizzare l’aiuto online per questo comando, eseguire dbutils.fs.help("cp")
.
In questo esempio il file denominato data.csv
viene copiato da /Volumes/main/default/my-volume/
a new-data.csv
nello stesso volume.
Python
dbutils.fs.cp("/Volumes/main/default/my-volume/data.csv", "/Volumes/main/default/my-volume/new-data.csv")
# Out[4]: True
R
dbutils.fs.cp("/Volumes/main/default/my-volume/data.csv", "/Volumes/main/default/my-volume/new-data.csv")
# [1] TRUE
Scala
dbutils.fs.cp("/Volumes/main/default/my-volume/data.csv", "/Volumes/main/default/my-volume/new-data.csv")
// res3: Boolean = true
Comando head (dbutils.fs.head)
Restituisce fino al numero massimo specificato di byte di un determinato file. I byte vengono restituiti come stringa con codifica UTF-8.
Per visualizzare l’aiuto online per questo comando, eseguire dbutils.fs.help("head")
.
In questo esempio vengono visualizzati i primi 25 byte del file data.csv
che si trova in /Volumes/main/default/my-volume/
.
Python
dbutils.fs.head("/Volumes/main/default/my-volume/data.csv", 25)
# [Truncated to first 25 bytes]
# Out[12]: 'Year,First Name,County,Se'
R
dbutils.fs.head("/Volumes/main/default/my-volume/data.csv", 25)
# [1] "Year,First Name,County,Se"
Scala
dbutils.fs.head("/Volumes/main/default/my-volume/data.csv", 25)
// [Truncated to first 25 bytes]
// res4: String =
// "Year,First Name,County,Se"
Comando ls (dbutils.fs.ls)
Elenca i contenuti di una directory.
Per visualizzare l’aiuto online per questo comando, eseguire dbutils.fs.help("ls")
.
In questo esempio vengono visualizzate informazioni sul contenuto di /Volumes/main/default/my-volume/
. Il campo modificationTime
è disponibile in Databricks Runtime 10.4 LTS e versioni successive. In R, modificationTime
viene restituito come stringa.
Python
dbutils.fs.ls("/Volumes/main/default/my-volume/")
# Out[13]: [FileInfo(path='dbfs:/Volumes/main/default/my-volume/data.csv', name='data.csv', size=2258987, modificationTime=1711357839000)]
R
dbutils.fs.ls("/Volumes/main/default/my-volume/")
# For prettier results from dbutils.fs.ls(<dir>), please use `%fs ls <dir>`
# [[1]]
# [[1]]$path
# [1] "/Volumes/main/default/my-volume/data.csv"
# [[1]]$name
# [1] "data.csv"
# [[1]]$size
# [1] 2258987
# [[1]]$isDir
# [1] FALSE
# [[1]]$isFile
# [1] TRUE
# [[1]]$modificationTime
# [1] "1711357839000"
Scala
dbutils.fs.ls("/tmp")
// res6: Seq[com.databricks.backend.daemon.dbutils.FileInfo] = WrappedArray(FileInfo(/Volumes/main/default/my-volume/data.csv, 2258987, 1711357839000))
Comando mkdirs (dbutils.fs.mkdirs)
Crea la directory specificata, se non esiste. Crea anche le directory padre necessarie.
Per visualizzare l’aiuto online per questo comando, eseguire dbutils.fs.help("mkdirs")
.
Nell'esempio riportato di seguito la directory my-data
viene creata in /Volumes/main/default/my-volume/
.
Python
dbutils.fs.mkdirs("/Volumes/main/default/my-volume/my-data")
# Out[15]: True
R
dbutils.fs.mkdirs("/Volumes/main/default/my-volume/my-data")
# [1] TRUE
Scala
dbutils.fs.mkdirs("/Volumes/main/default/my-volume/my-data")
// res7: Boolean = true
Comando mount (dbutils.fs.mount)
Monta la directory di origine specificata in DBFS nel punto di montaggio specificato.
Per visualizzare l’aiuto online per questo comando, eseguire dbutils.fs.help("mount")
.
Python
dbutils.fs.mount(
source = "wasbs://<container-name>@<storage-account-name>.blob.core.windows.net",
mount_point = "/mnt/<mount-name>",
extra_configs = {"<conf-key>":dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")})
Scala
dbutils.fs.mount(
source = "wasbs://<container-name>@<storage-account-name>.blob.core.windows.net/<directory-name>",
mountPoint = "/mnt/<mount-name>",
extraConfigs = Map("<conf-key>" -> dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")))
Per altri codici di esempio, vedere Connettersi ad Azure Data Lake Storage Gen2 e archiviazione BLOB.
Comando mounts (dbutils.fs.mounts)
Mostra informazioni su ciò che è attualmente montato all'interno di DBFS.
Per visualizzare l’aiuto online per questo comando, eseguire dbutils.fs.help("mounts")
.
Avviso
Chiamare dbutils.fs.refreshMounts()
su tutti gli altri cluster in esecuzione per propagare il nuovo montaggio. Vedere il comando refreshMounts (dbutils.fs.refreshMounts).
Python
dbutils.fs.mounts()
Scala
dbutils.fs.mounts()
Per altri codici di esempio, vedere Connettersi ad Azure Data Lake Storage Gen2 e archiviazione BLOB.
Comando mv (dbutils.fs.mv)
Sposta un file o una directory, possibilmente tra file system. Uno spostamento è una copia seguita da un'eliminazione, anche per gli spostamenti all'interno dei file system.
Per visualizzare l’aiuto online per questo comando, eseguire dbutils.fs.help("mv")
.
In questo esempio il file rows.csv
viene spostato da /Volumes/main/default/my-volume/
a /Volumes/main/default/my-volume/my-data/
.
Python
dbutils.fs.mv("/Volumes/main/default/my-volume/rows.csv", "/Volumes/main/default/my-volume/my-data/")
# Out[2]: True
R
dbutils.fs.mv("/Volumes/main/default/my-volume/rows.csv", "/Volumes/main/default/my-volume/my-data/")
# [1] TRUE
Scala
dbutils.fs.mv("/Volumes/main/default/my-volume/rows.csv", "/Volumes/main/default/my-volume/my-data/")
// res1: Boolean = true
Comando put (dbutils.fs.put)
Scrive in un file la stringa specificata. La stringa è con codifica UTF-8.
Per visualizzare l’aiuto online per questo comando, eseguire dbutils.fs.help("put")
.
Nell'esempio riportato di seguito la stringa Hello, Databricks!
viene scritta nel file denominato hello.txt
in /Volumes/main/default/my-volume/
. Se il file esiste già, verrà sovrascritto.
Python
dbutils.fs.put("/Volumes/main/default/my-volume/hello.txt", "Hello, Databricks!", True)
# Wrote 2258987 bytes.
# Out[6]: True
R
dbutils.fs.put("/Volumes/main/default/my-volume/hello.txt", "Hello, Databricks!", TRUE)
# [1] TRUE
Scala
dbutils.fs.put("/Volumes/main/default/my-volume/hello.txt", "Hello, Databricks!", true)
// Wrote 2258987 bytes.
// res2: Boolean = true
Comando refreshMounts (dbutils.fs.refreshMounts)
Forza tutti i computer del cluster ad aggiornare la cache di montaggio, assicurandosi che ricevano le informazioni più recenti.
Per visualizzare l’aiuto online per questo comando, eseguire dbutils.fs.help("refreshMounts")
.
Python
dbutils.fs.refreshMounts()
Scala
dbutils.fs.refreshMounts()
Per altri codici di esempio, vedere Connettersi ad Azure Data Lake Storage Gen2 e archiviazione BLOB.
Comando rm (dbutils.fs.rm)
Rimuove un file o una directory e, facoltativamente, tutto il relativo contenuto. Se viene specificato un file, il parametro recurse viene ignorato. Se si specifica una directory, si verifica un errore se la directory è disabilitata e se la directory non è vuota.
Per visualizzare l’aiuto online per questo comando, eseguire dbutils.fs.help("rm")
.
In questo esempio viene rimossa la directory /Volumes/main/default/my-volume/my-data/
, incluso il contenuto della directory.
Python
dbutils.fs.rm("/Volumes/main/default/my-volume/my-data/", True)
# Out[8]: True
R
dbutils.fs.rm("/Volumes/main/default/my-volume/my-data/", TRUE)
# [1] TRUE
Scala
dbutils.fs.rm("/Volumes/main/default/my-volume/my-data/", true)
// res6: Boolean = true
Comando unmount (dbutils.fs.unmount)
Elimina un punto di montaggio DBFS.
Avviso
Per evitare errori, non modificare mai un punto di montaggio mentre altri processi stanno leggendo o scrivendo su di esso. Dopo aver modificato un montaggio, eseguire sempre dbutils.fs.refreshMounts()
in tutti gli altri cluster in esecuzione per propagare eventuali aggiornamenti di montaggio. Vedere il comando refreshMounts (dbutils.fs.refreshMounts).
Per visualizzare l’aiuto online per questo comando, eseguire dbutils.fs.help("unmount")
.
dbutils.fs.unmount("/mnt/<mount-name>")
Per altri codici di esempio, vedere Connettersi ad Azure Data Lake Storage Gen2 e archiviazione BLOB.
Comando updateMount (dbutils.fs.updateMount)
È simile al comando dbutils.fs.mount
, ma aggiorna un punto di montaggio esistente anziché crearne uno nuovo. Se il punto di montaggio non è presente, restituisce un errore.
Per visualizzare l’aiuto online per questo comando, eseguire dbutils.fs.help("updateMount")
.
Avviso
Per evitare errori, non modificare mai un punto di montaggio mentre altri processi stanno leggendo o scrivendo su di esso. Dopo aver modificato un montaggio, eseguire sempre dbutils.fs.refreshMounts()
in tutti gli altri cluster in esecuzione per propagare eventuali aggiornamenti di montaggio. Vedere il comando refreshMounts (dbutils.fs.refreshMounts).
Questo comando è disponibile in Databricks Runtime 10.4 LTS e versioni successive.
Python
dbutils.fs.updateMount(
source = "wasbs://<container-name>@<storage-account-name>.blob.core.windows.net",
mount_point = "/mnt/<mount-name>",
extra_configs = {"<conf-key>":dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")})
Scala
dbutils.fs.updateMount(
source = "wasbs://<container-name>@<storage-account-name>.blob.core.windows.net/<directory-name>",
mountPoint = "/mnt/<mount-name>",
extraConfigs = Map("<conf-key>" -> dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")))
Utilità processi (dbutils.jobs)
Sottoutilità: taskValues
Nota
Questa utilità è disponibile solo per Python.
L'utilità processi consente di sfruttare le funzionalità dei processi. Per visualizzare l’aiuto online per questa utilità, eseguire dbutils.jobs.help()
.
Provides utilities for leveraging jobs features.
taskValues: TaskValuesUtils -> Provides utilities for leveraging job task values
Sottoutilità taskValues (dbutils.jobs.taskValues)
Nota
Questa sottoutilità è disponibile solo per Python.
Fornisce i comandi per sfruttare i valori delle attività di processo.
Usare questa utilità secondaria per impostare e ottenere valori arbitrari durante l'esecuzione di un processo. Questi valori sono detti valori attività. È possibile accedere ai valori attività nelle attività downstream della stessa esecuzione del processo. Ad esempio, è possibile comunicare identificatori o metriche, come le informazioni sulla valutazione di un modello di Machine Learning, tra attività diverse all'interno di un'esecuzione del processo. Ogni attività può impostare più valori attività, ottenerli o entrambe le operazioni. Ogni valore attività ha una chiave univoca all'interno della stessa attività. Questa chiave univoca è nota come chiave del valore attività. Si accede a un valore attività con il nome dell'attività e la chiave del valore attività.
Per visualizzare l’aiuto online per questa sottoutilità, eseguire dbutils.jobs.taskValues.help()
.
Comando get (dbutils.jobs.taskValues.get)
Nota
Nota: questo comando è disponibile solo per Python.
In Databricks Runtime 10.4 e versioni precedenti, se get
non riesce a trovare l'attività, viene generato un Py4JJavaError anziché un ValueError
.
Ottiene il contenuto del valore attività specificato per l'attività specificata nell'esecuzione del processo corrente.
Per visualizzare l’aiuto online per questo comando, eseguire dbutils.jobs.taskValues.help("get")
.
Ad esempio:
dbutils.jobs.taskValues.get(taskKey = "my-task", \
key = "my-key", \
default = 7, \
debugValue = 42)
Nell'esempio precedente:
taskKey
è il nome dell'attività che imposta il valore attività. Se il comando non riesce a trovare questa attività, viene generato unValueError
.key
è il nome della chiave del valore attività impostata con il comando set (dbutils.jobs.taskValues.set). Se il comando non riesce a trovare la chiave di questo valore attività, viene generato unValueError
(a meno che non sia specificatodefault
).default
è un valore facoltativo restituito se non è possibile trovarekey
.default
non può essereNone
.debugValue
è un valore facoltativo che viene restituito se si tenta di ottenere il valore attività dall'interno di un notebook in esecuzione all'esterno di un processo. Questo può essere utile durante il debug quando si vuole eseguire manualmente il notebook e restituire un valore anziché generare unTypeError
per impostazione predefinita.debugValue
non può essereNone
.
Se si tenta di ottenere un valore attività dall'interno di un notebook in esecuzione all'esterno di un processo, questo comando genera un TypeError
per impostazione predefinita. Tuttavia, se l'argomento debugValue
viene specificato nel comando, viene restituito il valore di debugValue
e non generato un TypeError
.
Comando set (dbutils.jobs.taskValues.set)
Nota
Nota: questo comando è disponibile solo per Python.
Imposta o aggiorna un valore attività. È possibile configurare fino a 250 valori attività per l'esecuzione di un processo.
Per visualizzare l’aiuto online per questo comando, eseguire dbutils.jobs.taskValues.help("set")
.
Alcuni esempi includono:
dbutils.jobs.taskValues.set(key = "my-key", \
value = 5)
dbutils.jobs.taskValues.set(key = "my-other-key", \
value = "my other value")
Negli esempi precedenti:
key
è la chiave del valore attività. Questa chiave deve essere univoca per l'attività. Ovvero, se due attività diverse impostano un valore attività con chiaveK
, si tratta di due valori attività diversi con la stessa chiaveK
.value
è il valore della chiave di questo valore attività. Questo comando deve essere in grado di rappresentare il valore internamente in formato JSON. Le dimensioni della rappresentazione JSON del valore non possono superare i 48 KiB.
Se si tenta di impostare un valore attività dall'interno di un notebook in esecuzione all'esterno di un processo, questo comando attiva alcuna operazione.
Utilità libreria (dbutils.library)
La maggior parte dei metodi del modulo secondario dbutils.library
è deprecata. Vedere Utilità libreria (dbutils.library) (legacy).
Potrebbe essere necessario riavviare a livello di codice il processo Python in Azure Databricks per assicurarsi che le librerie installate o aggiornate in locale funzionino correttamente nel kernel Python per la SparkSession corrente. A tale scopo, eseguire il comando dbutils.library.restartPython
. Vedere Riavviare il processo Python in Azure Databricks.
Utilità notebook (dbutils.notebook)
L'utilità notebook consente di concatenare i notebook e agire sui risultati. Vedere Eseguire un notebook di Databricks da un altro notebook.
Per elencare i comandi disponibili, eseguire dbutils.notebook.help()
.
exit(value: String): void -> This method lets you exit a notebook with a value
run(path: String, timeoutSeconds: int, arguments: Map): String -> This method runs a notebook and returns its exit value.
Comando exit (dbutils.notebook.exit)
Chiude un notebook con un valore.
Per visualizzare l’aiuto online per questo comando, eseguire dbutils.notebook.help("exit")
.
In questo esempio viene chiuso il notebook con il valore Exiting from My Other Notebook
.
Python
dbutils.notebook.exit("Exiting from My Other Notebook")
# Notebook exited: Exiting from My Other Notebook
R
dbutils.notebook.exit("Exiting from My Other Notebook")
# Notebook exited: Exiting from My Other Notebook
Scala
dbutils.notebook.exit("Exiting from My Other Notebook")
// Notebook exited: Exiting from My Other Notebook
Nota
Se l'esecuzione dispone di una query con flusso strutturato in esecuzione in background, la chiamata a dbutils.notebook.exit()
non termina l'esecuzione. L'esecuzione continuerà finché la query viene eseguita in background. È possibile arrestare la query in esecuzione in background facendo clic su Annulla nella cella della query o eseguendo query.stop()
. Quando la query viene arrestata, è possibile terminare l'esecuzione con dbutils.notebook.exit()
.
Comando run (dbutils.notebook.run)
Esegue un notebook e ne restituisce il valore di uscita. Il notebook verrà eseguito nel cluster corrente per impostazione predefinita.
Nota
La lunghezza massima del valore stringa restituito dal comando run
è di 5 MB. Vedere Ottenere l'output per una singola esecuzione (GET /jobs/runs/get-output
).
Per visualizzare l’aiuto online per questo comando, eseguire dbutils.notebook.help("run")
.
Questo esempio esegue un notebook denominato My Other Notebook
nella stessa posizione del notebook chiamante. Il notebook chiamato termina con la riga di codice dbutils.notebook.exit("Exiting from My Other Notebook")
. Se il notebook chiamato non termina l'esecuzione entro 60 secondi, viene generata un'eccezione.
Python
dbutils.notebook.run("My Other Notebook", 60)
# Out[14]: 'Exiting from My Other Notebook'
Scala
dbutils.notebook.run("My Other Notebook", 60)
// res2: String = Exiting from My Other Notebook
Utilità segreti (dbutils.secrets)
Comandi: get, getBytes, list, listScopes
L'utilità segreti consente di archiviare e accedere alle informazioni sulle credenziali riservate senza renderle visibili nei notebook. Vedere Gestione dei segreti e Usare i segreti in un notebook. Per elencare i comandi disponibili, eseguire dbutils.secrets.help()
.
get(scope: String, key: String): String -> Gets the string representation of a secret value with scope and key
getBytes(scope: String, key: String): byte[] -> Gets the bytes representation of a secret value with scope and key
list(scope: String): Seq -> Lists secret metadata for secrets within a scope
listScopes: Seq -> Lists secret scopes
Comando get (dbutils.secrets.get)
Ottiene la rappresentazione stringa del valore di un segreto per l'ambito e la chiave dei segreti specificati.
Avviso
Gli amministratori, gli autori di segreti e gli utenti autorizzati possono leggere i segreti di Azure Databricks. Anche se Azure Databricks si impegna a eliminare i valori dei segreti che potrebbero essere visualizzati nei notebook, non è possibile impedire a tali utenti di leggere i segreti. Per altre informazioni, vedere Offuscamento dei segreti.
Per visualizzare l’aiuto online per questo comando, eseguire dbutils.secrets.help("get")
.
In questo esempio viene recuperata la rappresentazione stringa del valore del segreto per l'ambito denominato my-scope
e la chiave denominata my-key
.
Python
dbutils.secrets.get(scope="my-scope", key="my-key")
# Out[14]: '[REDACTED]'
R
dbutils.secrets.get(scope="my-scope", key="my-key")
# [1] "[REDACTED]"
Scala
dbutils.secrets.get(scope="my-scope", key="my-key")
// res0: String = [REDACTED]
Comando getBytes (dbutils.secrets.getBytes)
Ottiene la rappresentazione in byte del valore di un segreto per l'ambito e la chiave specificati.
Per visualizzare l’aiuto online per questo comando, eseguire dbutils.secrets.help("getBytes")
.
In questo esempio viene recuperata la rappresentazione in byte del valore del segreto (nell’esempio, a1!b2@c3#
) per l'ambito denominato my-scope
e la chiave denominata my-key
.
Python
dbutils.secrets.getBytes(scope="my-scope", key="my-key")
# Out[1]: b'a1!b2@c3#'
R
dbutils.secrets.getBytes(scope="my-scope", key="my-key")
# [1] 61 31 21 62 32 40 63 33 23
Scala
dbutils.secrets.getBytes(scope="my-scope", key="my-key")
// res1: Array[Byte] = Array(97, 49, 33, 98, 50, 64, 99, 51, 35)
Comando list (dbutils.secrets.list)
Elenca i metadati dei segreti all'interno dell'ambito specificato.
Per visualizzare l’aiuto online per questo comando, eseguire dbutils.secrets.help("list")
.
In questo esempio vengono elencati i metadati dei segreti all'interno dell'ambito denominato my-scope
.
Python
dbutils.secrets.list("my-scope")
# Out[10]: [SecretMetadata(key='my-key')]
R
dbutils.secrets.list("my-scope")
# [[1]]
# [[1]]$key
# [1] "my-key"
Scala
dbutils.secrets.list("my-scope")
// res2: Seq[com.databricks.dbutils_v1.SecretMetadata] = ArrayBuffer(SecretMetadata(my-key))
Comando listScopes (dbutils.secrets.listScopes)
Elenca gli ambiti disponibili.
Per visualizzare l’aiuto online per questo comando, eseguire dbutils.secrets.help("listScopes")
.
In questo esempio vengono elencati gli ambiti disponibili.
Python
dbutils.secrets.listScopes()
# Out[14]: [SecretScope(name='my-scope')]
R
dbutils.secrets.listScopes()
# [[1]]
# [[1]]$name
# [1] "my-scope"
Scala
dbutils.secrets.listScopes()
// res3: Seq[com.databricks.dbutils_v1.SecretScope] = ArrayBuffer(SecretScope(my-scope))
Utilità Widgets (dbutils.widgets)
Comandi: combobox, dropdown, get, getArgument, multiselect, remove, removeAll, text
L'utilità widgets consente di parametrizzare i notebook. Vedere Widget di Databricks.
Per elencare i comandi disponibili, eseguire dbutils.widgets.help()
.
combobox(name: String, defaultValue: String, choices: Seq, label: String): void -> Creates a combobox input widget with a given name, default value and choices
dropdown(name: String, defaultValue: String, choices: Seq, label: String): void -> Creates a dropdown input widget a with given name, default value and choices
get(name: String): String -> Retrieves current value of an input widget
getAll: map -> Retrieves a map of all widget names and their values
getArgument(name: String, optional: String): String -> (DEPRECATED) Equivalent to get
multiselect(name: String, defaultValue: String, choices: Seq, label: String): void -> Creates a multiselect input widget with a given name, default value and choices
remove(name: String): void -> Removes an input widget from the notebook
removeAll: void -> Removes all widgets in the notebook
text(name: String, defaultValue: String, label: String): void -> Creates a text input widget with a given name and default value
Comando combobox (dbutils.widgets.combobox)
Crea e mostra un widget casella combinata con il nome programmatico, il valore predefinito, le scelte e l'etichetta facoltativa specificati.
Per visualizzare l’aiuto online per questo comando, eseguire dbutils.widgets.help("combobox")
.
In questo esempio viene creato e mostrato un widget casella combinata con il nome programmatico fruits_combobox
. Offre le opzioni apple
, banana
, coconut
e dragon fruit
ed è impostato sul valore iniziale di banana
. Questo widget casella combinata include un'etichetta Fruits
associata. Questo esempio termina stampando il valore iniziale del widget casella combinata, banana
.
Python
dbutils.widgets.combobox(
name='fruits_combobox',
defaultValue='banana',
choices=['apple', 'banana', 'coconut', 'dragon fruit'],
label='Fruits'
)
print(dbutils.widgets.get("fruits_combobox"))
# banana
R
dbutils.widgets.combobox(
name='fruits_combobox',
defaultValue='banana',
choices=list('apple', 'banana', 'coconut', 'dragon fruit'),
label='Fruits'
)
print(dbutils.widgets.get("fruits_combobox"))
# [1] "banana"
Scala
dbutils.widgets.combobox(
"fruits_combobox",
"banana",
Array("apple", "banana", "coconut", "dragon fruit"),
"Fruits"
)
print(dbutils.widgets.get("fruits_combobox"))
// banana
SQL
CREATE WIDGET COMBOBOX fruits_combobox DEFAULT "banana" CHOICES SELECT * FROM (VALUES ("apple"), ("banana"), ("coconut"), ("dragon fruit"))
SELECT :fruits_combobox
-- banana
Comando dropdown (dbutils.widgets.dropdown)
Crea e mostra un widget a discesa con il nome programmatico, il valore predefinito, le scelte e l'etichetta facoltativa specificati.
Per visualizzare l’aiuto online per questo comando, eseguire dbutils.widgets.help("dropdown")
.
In questo esempio viene creato e mostrato un widget a discesa con il nome programmatico toys_dropdown
. Offre le opzioni alphabet blocks
, basketball
, cape
e doll
ed è impostato sul valore iniziale di basketball
. Questo widget a discesa ha un'etichetta Toys
associata. Questo esempio termina stampando il valore iniziale del widget a discesa, basketball
.
Python
dbutils.widgets.dropdown(
name='toys_dropdown',
defaultValue='basketball',
choices=['alphabet blocks', 'basketball', 'cape', 'doll'],
label='Toys'
)
print(dbutils.widgets.get("toys_dropdown"))
# basketball
R
dbutils.widgets.dropdown(
name='toys_dropdown',
defaultValue='basketball',
choices=list('alphabet blocks', 'basketball', 'cape', 'doll'),
label='Toys'
)
print(dbutils.widgets.get("toys_dropdown"))
# [1] "basketball"
Scala
dbutils.widgets.dropdown(
"toys_dropdown",
"basketball",
Array("alphabet blocks", "basketball", "cape", "doll"),
"Toys"
)
print(dbutils.widgets.get("toys_dropdown"))
// basketball
SQL
CREATE WIDGET DROPDOWN toys_dropdown DEFAULT "basketball" CHOICES SELECT * FROM (VALUES ("alphabet blocks"), ("basketball"), ("cape"), ("doll"))
SELECT :toys_dropdown
-- basketball
Comando get (dbutils.widgets.get)
Ottiene il valore corrente del widget con il nome programmatico specificato. Questo nome programmatico può essere:
- Il nome di un widget personalizzato del notebook, ad esempio
fruits_combobox
otoys_dropdown
. - Il nome di un parametro personalizzato passato al notebook come parte di un'attività del notebook, ad esempio
name
oage
. Per altre informazioni, vedere la copertura dei parametri per le attività del notebook nell'interfaccia utente per i processi o il camponotebook_params
nell'operazione Attiva una nuova esecuzione processo (POST /jobs/run-now
) nell'API Processi.
Per visualizzare l’aiuto online per questo comando, eseguire dbutils.widgets.help("get")
.
In questo esempio si ottiene il valore del widget con il nome programmatico fruits_combobox
.
Python
dbutils.widgets.get('fruits_combobox')
# banana
R
dbutils.widgets.get('fruits_combobox')
# [1] "banana"
Scala
dbutils.widgets.get("fruits_combobox")
// res6: String = banana
SQL
SELECT :fruits_combobox
-- banana
In questo esempio si ottiene il valore del parametro dell’attività del notebook con il nome programmatico age
. Questo parametro era impostato su 35
quando era in esecuzione l'attività del notebook correlata.
Python
dbutils.widgets.get('age')
# 35
R
dbutils.widgets.get('age')
# [1] "35"
Scala
dbutils.widgets.get("age")
// res6: String = 35
SQL
SELECT :age
-- 35
Comando getAll (dbutils.widgets.getAll)
Ottiene un mapping di tutti i nomi e i valori correnti dei widget. Ciò può essere utile in particolare per passare rapidamente i valori dei widget a una query spark.sql()
.
Questo comando è disponibile in Databricks Runtime 13.3 LTS e versioni successive. È disponibile solo per Python e Scala.
Per visualizzare l’aiuto online per questo comando, eseguire dbutils.widgets.help("getAll")
.
In questo esempio si ottiene la mappa dei valori del widget e la si passa come argomenti di parametro in una query SQL Spark.
Python
df = spark.sql("SELECT * FROM table where col1 = :param", dbutils.widgets.getAll())
df.show()
# Query output
Scala
val df = spark.sql("SELECT * FROM table where col1 = :param", dbutils.widgets.getAll())
df.show()
// res6: Query output
Comando getArgument (dbutils.widgets.getArgument)
Ottiene il valore corrente del widget con il nome programmatico specificato. Se il widget non esiste, può essere restituito un messaggio facoltativo.
Nota
Questo comando è deprecato. Usare invece dbutils.widgets.get.
Per visualizzare l’aiuto online per questo comando, eseguire dbutils.widgets.help("getArgument")
.
In questo esempio si ottiene il valore del widget con il nome programmatico fruits_combobox
. Se questo widget non esiste, viene restituito il messaggio Error: Cannot find fruits combobox
.
Python
dbutils.widgets.getArgument('fruits_combobox', 'Error: Cannot find fruits combobox')
# Deprecation warning: Use dbutils.widgets.text() or dbutils.widgets.dropdown() to create a widget and dbutils.widgets.get() to get its bound value.
# Out[3]: 'banana'
R
dbutils.widgets.getArgument('fruits_combobox', 'Error: Cannot find fruits combobox')
# Deprecation warning: Use dbutils.widgets.text() or dbutils.widgets.dropdown() to create a widget and dbutils.widgets.get() to get its bound value.
# [1] "banana"
Scala
dbutils.widgets.getArgument("fruits_combobox", "Error: Cannot find fruits combobox")
// command-1234567890123456:1: warning: method getArgument in trait WidgetsUtils is deprecated: Use dbutils.widgets.text() or dbutils.widgets.dropdown() to create a widget and dbutils.widgets.get() to get its bound value.
// dbutils.widgets.getArgument("fruits_combobox", "Error: Cannot find fruits combobox")
// ^
// res7: String = banana
Comando multiselect (dbutils.widgets.multiselect)
Crea e mostra un widget a selezione multipla con il nome programmatico, il valore predefinito, le scelte e l'etichetta facoltativa specificati.
Per visualizzare l’aiuto online per questo comando, eseguire dbutils.widgets.help("multiselect")
.
In questo esempio viene creato e mostrato un widget a selezione multipla con il nome programmatico days_multiselect
. Offre le opzioni da Monday
a Sunday
, ed è impostato sul valore iniziale di Tuesday
. Questo widget a selezione multipla ha un'etichetta Days of the Week
associata. Questo esempio termina stampando il valore iniziale del widget a selezione multipla, Tuesday
.
Python
dbutils.widgets.multiselect(
name='days_multiselect',
defaultValue='Tuesday',
choices=['Monday', 'Tuesday', 'Wednesday', 'Thursday',
'Friday', 'Saturday', 'Sunday'],
label='Days of the Week'
)
print(dbutils.widgets.get("days_multiselect"))
# Tuesday
R
dbutils.widgets.multiselect(
name='days_multiselect',
defaultValue='Tuesday',
choices=list('Monday', 'Tuesday', 'Wednesday', 'Thursday',
'Friday', 'Saturday', 'Sunday'),
label='Days of the Week'
)
print(dbutils.widgets.get("days_multiselect"))
# [1] "Tuesday"
Scala
dbutils.widgets.multiselect(
"days_multiselect",
"Tuesday",
Array("Monday", "Tuesday", "Wednesday", "Thursday",
"Friday", "Saturday", "Sunday"),
"Days of the Week"
)
print(dbutils.widgets.get("days_multiselect"))
// Tuesday
SQL
CREATE WIDGET MULTISELECT days_multiselect DEFAULT "Tuesday" CHOICES SELECT * FROM (VALUES ("Monday"), ("Tuesday"), ("Wednesday"), ("Thursday"), ("Friday"), ("Saturday"), ("Sunday"))
SELECT :days_multiselect
-- Tuesday
Comando remove (dbutils.widgets.remove)
Rimuove il widget con il nome programmatico specificato.
Per visualizzare l’aiuto online per questo comando, eseguire dbutils.widgets.help("remove")
.
Importante
Se si aggiunge un comando per rimuovere un widget, non è possibile aggiungere un comando successivo per creare un widget nella stessa cella. È necessario creare il widget in un'altra cella.
In questo esempio viene rimosso il widget con il nome programmatico fruits_combobox
.
Python
dbutils.widgets.remove('fruits_combobox')
R
dbutils.widgets.remove('fruits_combobox')
Scala
dbutils.widgets.remove("fruits_combobox")
SQL
REMOVE WIDGET fruits_combobox
Comando removeAll (dbutils.widgets.removeAll)
Rimuove tutti i widget dal notebook.
Per visualizzare l’aiuto online per questo comando, eseguire dbutils.widgets.help("removeAll")
.
Importante
Se si aggiunge un comando per rimuovere tutti i widget, non è possibile aggiungere un comando successivo per creare alcun widget nella stessa cella. È necessario creare i widget in un'altra cella.
In questo esempio vengono rimossi tutti i widget dal notebook.
Python
dbutils.widgets.removeAll()
R
dbutils.widgets.removeAll()
Scala
dbutils.widgets.removeAll()
Comando text (dbutils.widgets.text)
Crea e mostra un widget di testo con il nome programmatico, il valore predefinito e l'etichetta facoltativa specificati.
Per visualizzare l’aiuto online per questo comando, eseguire dbutils.widgets.help("text")
.
In questo esempio viene creato e mostrato un widget di testo con il nome programmatico your_name_text
. È impostato sul valore iniziale di Enter your name
. Questo widget di testo ha un'etichetta Your name
associata. Questo esempio termina stampando il valore iniziale del widget di testo, Enter your name
.
Python
dbutils.widgets.text(
name='your_name_text',
defaultValue='Enter your name',
label='Your name'
)
print(dbutils.widgets.get("your_name_text"))
# Enter your name
R
dbutils.widgets.text(
name='your_name_text',
defaultValue='Enter your name',
label='Your name'
)
print(dbutils.widgets.get("your_name_text"))
# [1] "Enter your name"
Scala
dbutils.widgets.text(
"your_name_text",
"Enter your name",
"Your name"
)
print(dbutils.widgets.get("your_name_text"))
// Enter your name
SQL
CREATE WIDGET TEXT your_name_text DEFAULT "Enter your name"
SELECT :your_name_text
-- Enter your name
Libreria dell'API delle utilità di Databricks
Importante
La libreria dell'API delle utilità di Databricks (dbutils-api
) è deprecata. Anche se questa libreria è ancora disponibile, Databricks non pianifica alcuna nuova funzionalità per la libreria dbutils-api
.
Databricks consiglia invece di usare una delle librerie seguenti:
Per accelerare lo sviluppo di applicazioni, può essere utile compilare, creare e testare le applicazioni prima di distribuirle come processi di produzione. Per consentire la compilazione in base alle utilità di Databricks, Databricks fornisce la libreria dbutils-api
. È possibile scaricare la libreria dbutils-api
dalla pagina Web dell'API DBUtils del sito Web del repository Maven o includere la libreria aggiungendo una dipendenza al file di compilazione:
SBT
libraryDependencies += "com.databricks" % "dbutils-api_TARGET" % "VERSION"
Maven
<dependency> <groupId>com.databricks</groupId> <artifactId>dbutils-api_TARGET</artifactId> <version>VERSION</version> </dependency>
Gradle
compile 'com.databricks:dbutils-api_TARGET:VERSION'
Sostituire TARGET
con la destinazione desiderata (ad esempio 2.12
) e VERSION
con la versione desiderata (ad esempio 0.0.5
). Per un elenco delle destinazioni e delle versioni disponibili, vedere la pagina Web dell'API DBUtils del sito Web del repository Maven.
Dopo aver compilato l'applicazione in base a questa libreria, è possibile distribuire l'applicazione.
Importante
La libreria dbutils-api
consente di compilare localmente un'applicazione che usa dbutils
, ma non di eseguirla. Per eseguire l'applicazione, è necessario distribuirla in Azure Databricks.
Limiti
La chiamata a dbutils
all'interno di executor può produrre risultati imprevisti o generare potenziali errori.
Se è necessario eseguire operazioni di file system su executor usando dbutils
, sono disponibili diverse alternative più veloci e scalabili:
- Per le operazioni di copia o spostamento di file, è possibile controllare un'opzione più veloce per eseguire operazioni di file system descritte in Parallelizzare le operazioni di filesystem).
- Per le operazioni di elenco ed eliminazione di file system, è possibile fare riferimento a metodi di elenco ed eliminazione paralleli che usano Spark, disponibili in Come elencare ed eliminare file più velocemente in Databricks.
Per informazioni sugli executor, vedere Panoramica della modalità cluster nel sito Web Apache Spark.