Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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.
Output delle celle del notebook
- I risultati della tabella sono limitati a 10 K righe o 2 MB, a seconda di quale dei due limiti viene prima.
- I cluster di processi hanno una dimensione massima di output del notebook di 30 MB.
- In Databricks Runtime 17.0 e versioni successive:
- Per impostazione predefinita, le dimensioni massime di output delle celle sono pari a 10 MB.
- Questo limite può essere personalizzato nelle celle Python per qualsiasi valore compreso tra 1 MB e 20 MB (inclusi) usando il magic della cella seguente:
%set_cell_max_output_size_in_mb <size_in_MB>
. Questo limite verrà quindi applicato a tutte le celle del notebook. - Quando l'output della cella supera il limite di dimensioni configurato, l'output viene troncato per rientrare nel limite. Il troncamento viene applicato in modo da preservare il più output utile possibile.
- In Databricks Runtime 16.4 LTS e versioni successive:
- I risultati di testo restituiscono un massimo di 50.000 caratteri.
- In Databricks Runtime 12.2 e versioni successive è possibile aumentare questo limite fino a 20 MB impostando la proprietà di configurazione spark ,
spark.databricks.driver.maxReplOutputLength
. - Quando l'output della cella supera il limite di dimensioni configurato, l'output viene completamente rimosso.
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
- Calcolo con la modalità di accesso impostata su Standard (in precedenza condiviso) in Databricks Runtime 14.3 LTS e versioni successive.
- Calcolo con modalità di accesso impostata su Dedicato (in precedenza utente singolo) in Databricks Runtime 13.3 LTS e versioni successive
- Calcolo con modalità di accesso impostata su Nessun isolamento condiviso in Databricks Runtime 13.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 si è connessi a calcolo serverless e a cluster con modalità di accesso impostata su Standard.
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 (una libreria Python per widget interattivi)
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]
.