Condividi tramite


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 qualsiasi livello 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à spark.databricks.driver.maxReplOutputLengthdi configurazione spark .

Debugger del notebook

Limitazioni del debugger del notebook:

  • Il debugger funziona solo con Python. Non supporta Scala o R.
  • Il debugger non funziona nei cluster in modalità accesso condiviso .
  • 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.

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.

  • Esiste un problema noto in cui uno stato del widget potrebbe non essere chiaro correttamente dopo aver premuto Esegui tutto, anche dopo la cancellazione o la rimozione del 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].

Bamboolib

Limitazioni di bamboolib:

  • L'uso di bamboolib per il wrangling dei dati è limitato a circa 10 milioni di righe. Questo limite si basa su pandas e sulle risorse di calcolo del cluster.
  • L'uso di bamboolib per le visualizzazioni dei dati è limitato a circa 10.000 righe. Questo limite è basato sul tracciato.