Limitazioni note dei notebook di Databricks
Questo articolo illustra le limitazioni note dei notebook di Databricks. Per altri limiti delle risorse, vedere Limiti delle risorse.
Ridimensionamento dei notebook
- Le singole celle del notebook hanno un limite di input di 6 MB.
- La dimensione massima del notebook per il salvataggio automatico, l'importazione, l'esportazione e la clonazione degli snapshot di revisione è di 10 MB.
- È possibile salvare manualmente i notebook fino a 32 MB.
Tabella dei risultati del Notebook
- I risultati della tabella sono limitati a 10.000 righe o 2 MB, a seconda di quale sia inferiore.
- I cluster di processi hanno una dimensione massima di output del notebook di 30 MB.
- I risultati di comandi non tabulari hanno un limite di 20 MB.
- Per impostazione predefinita, i risultati di testo restituiscono un massimo di 50.000 caratteri. Con Databricks Runtime 12.2 LTS e versioni successive, è possibile aumentare questo limite impostando la proprietà di configurazione spark
spark.databricks.driver.maxReplOutputLength
.
Debugger del notebook
Limitazioni del debugger del notebook:
- Il debugger funziona solo con Python. Non supporta Scala o R.
- Per accedere al debugger, il notebook deve essere connesso a una delle risorse di calcolo seguenti:
- di calcolo serverless
- Cluster con modalità di accesso impostato su utente singolo in Databricks Runtime 13.3 LTS e versioni successive
- Cluster con modalità di accesso impostata su Nessun isolamento condiviso in Databricks Runtime 13.3 LTS e versioni successive
- Cluster con modalità di accesso impostato su condiviso in Databricks Runtime 14.3 LTS e versioni successive
- Il debugger non supporta l'esecuzione di istruzioni in file o moduli esterni.
- Non è possibile eseguire altri comandi nel notebook quando è attiva una sessione di debug.
- Il debugger non supporta il debug nei sottoprocessi quando è connesso a calcolo serverless e ai cluster con modalità di accesso impostata su Condiviso.
Notebook di SQL Warehouse
Limitazioni dei notebook di SQL Warehouse:
- Quando si è collegati a un data warehouse SQL, i contesti di esecuzione hanno un timeout di inattività di 8 ore.
ipywidgets
Limitazioni di ipywidgets:
- Un notebook che usa ipywidgets deve essere collegato a un cluster in esecuzione.
- Gli stati del widget non vengono mantenuti tra le sessioni del notebook. È necessario eseguire nuovamente le celle del widget per eseguirne il rendering ogni volta che si collega il notebook a un cluster.
- Gli ipywidget password e controller non sono supportati.
- I widget HTMLMath e Label con espressioni LaTeX non vengono visualizzati correttamente. Ad esempio,
widgets.Label(value=r'$$\frac{x+1}{x-1}$$')
il rendering non viene eseguito correttamente. - I widget potrebbero non essere visualizzati correttamente se il notebook è in modalità scura, in particolare i widget colorati.
- Gli output dei widget non possono essere usati nelle visualizzazioni del dashboard del notebook.
- La dimensione massima del payload del messaggio per un ipywidget è di 5 MB. Il rendering dei widget che usano immagini o dati di testo di grandi dimensioni potrebbe non essere eseguito correttamente.
Widget di Databricks
Limitazioni dei widget di Databricks:
È possibile creare un massimo di 512 widget in un notebook.
Un nome di widget è limitato a 1024 caratteri.
Un'etichetta del widget è limitata a 2048 caratteri.
Un massimo di 2048 caratteri può essere immesso in un widget di testo.
Possono essere disponibili un massimo di 1024 opzioni per un widget a selezione multipla, casella combinata o elenco a discesa.
Si verifica un problema noto per cui uno stato del widget potrebbe non essere chiaro correttamente dopo aver premuto Esegui tutto, anche dopo aver cancellato o rimosso il widget nel codice. In questo caso, si noterà una discrepanza tra gli stati di visualizzazione e stampati del widget. La ripetizione dell'esecuzione delle celle singolarmente potrebbe ignorare questo problema. Per evitare completamente questo problema, Databricks consiglia di usare ipywidgets.
Non è consigliabile accedere allo stato del widget direttamente in contesti asincroni come thread, sottoprocessi o Structured Streaming (foreachBatch), perché lo stato del widget può cambiare durante l'esecuzione del codice asincrono. Se è necessario accedere allo stato del widget in un contesto asincrono, passarlo come argomento. Ad esempio, se si dispone del codice seguente che usa thread:
import threading def thread_func(): # Unsafe access in a thread value = dbutils.widgets.get('my_widget') print(value) thread = threading.Thread(target=thread_func) thread.start() thread.join()
Databricks consiglia invece di usare un argomento:
# Access widget values outside the asynchronous context and pass them to the function value = dbutils.widgets.get('my_widget') def thread_func(val): # Use the passed value safely inside the thread print(val) thread = threading.Thread(target=thread_func, args=(value,)) thread.start() thread.join()
I widget non possono in genere passare argomenti tra lingue diverse all'interno di un notebook. È possibile creare un widget
arg1
in una cella Python e usarlo in una cella SQL o Scala se si esegue una cella alla volta. Tuttavia, questo non funziona se si usa Esegui tutto o si esegue il notebook come processo. Alcune soluzioni alternative sono:- Per i notebook che non combinano lingue, è possibile creare un notebook per ogni lingua e passare gli argomenti quando si esegue il notebook.
- È possibile accedere al widget usando una
spark.sql()
chiamata. Ad esempio, in Python:spark.sql("select getArgument('arg1')").take(1)[0][0]
.