Delen via


Bekende beperkingen voor Databricks-notebooks

In dit artikel worden bekende beperkingen van Databricks-notebooks behandeld. Zie Resourcelimieten voor aanvullende resourcelimieten.

Grootte van notitieblok

  • Afzonderlijke notebookcellen hebben een invoerlimiet van 6 MB.
  • De maximale notebookgrootte voor revisiemomentopnamen die automatisch worden opgeslagen, geïmporteerd, geëxporteerd en klonen is 10 MB.
  • U kunt notitieblokken handmatig opslaan tot 32 MB.

Tabel met notebookresultaten

  • Tabelresultaten zijn beperkt tot 10.000 rijen of 2 MB, afhankelijk van wat lager is.
  • Taakclusters hebben een maximale notebookuitvoergrootte van 30 MB.
  • De resultaten van niet-tabellaire opdrachten hebben een limiet van 20 MB.
  • Tekstresultaten retourneren standaard maximaal 50.000 tekens. Met Databricks Runtime 12.2 LTS en hoger kunt u deze limiet verhogen door de Spark-configuratie-eigenschap spark.databricks.driver.maxReplOutputLengthin te stellen.

Notebook-foutopsporingsprogramma

Beperkingen van het notebook-foutopsporingsprogramma:

  • Het foutopsporingsprogramma werkt alleen met Python. Het biedt geen ondersteuning voor Scala of R.
  • Het foutopsporingsprogramma werkt niet op clusters in de modus Gedeelde toegang.
  • Het foutopsporingsprogramma biedt geen ondersteuning voor het instappen in externe bestanden of modules.
  • U kunt geen andere opdrachten uitvoeren in het notebook wanneer een foutopsporingssessie actief is.

SQL Warehouse-notebooks

Beperkingen van SQL Warehouses-notebooks:

  • Wanneer deze aan een SQL-warehouse is gekoppeld, hebben uitvoeringscontexten een time-out voor inactiviteit van 8 uur.

ipywidgets

Beperkingen van ipywidgets:

  • Een notebook met ipywidgets moet worden gekoppeld aan een actief cluster.
  • Widgetstatussen blijven niet behouden in notebooksessies. U moet widgetcellen opnieuw uitvoeren om ze telkens weer te geven wanneer u het notebook aan een cluster koppelt.
  • Het wachtwoord en de controller ipywidgets worden niet ondersteund.
  • HTMLMath- en Labelwidgets met LaTeX-expressies worden niet correct weergegeven. (Wordt bijvoorbeeld widgets.Label(value=r'$$\frac{x+1}{x-1}$$') niet correct weergegeven.)
  • Widgets worden mogelijk niet correct weergegeven als het notitieblok zich in de donkere modus bevindt, met name gekleurde widgets.
  • Widgetuitvoer kan niet worden gebruikt in dashboardweergaven van notitieblok.
  • De maximale grootte van de nettolading van berichten voor een ipywidget is 5 MB. Widgets die gebruikmaken van afbeeldingen of grote tekstgegevens, worden mogelijk niet goed weergegeven.

Databricks-widgets

Beperkingen van Databricks-widgets:

  • Er kunnen maximaal 512 widgets worden gemaakt in een notitieblok.

  • Een widgetnaam is beperkt tot 1024 tekens.

  • Een widgetlabel is beperkt tot 2048 tekens.

  • Er kunnen maximaal 2048 tekens worden ingevoerd voor een tekstwidget.

  • Er kunnen maximaal 1024 opties zijn voor een meervoudige selectie, keuzelijst met invoervak of vervolgkeuzelijstwidget.

  • Er is een bekend probleem waarbij een widgetstatus mogelijk niet goed wist na het drukken op Alles uitvoeren, zelfs na het wissen of verwijderen van de widget in de code. Als dit gebeurt, ziet u een discrepantie tussen de visuele toestand van de widget en de afgedrukte statussen. Het opnieuw uitvoeren van de cellen kan dit probleem omzeilen. Om dit probleem volledig te voorkomen, raadt Databricks het gebruik van ipywidgets aan.

  • U moet de widgetstatus niet rechtstreeks openen in asynchrone contexten, zoals threads, subprocessen of Structured Streaming (foreachBatch), omdat de widgetstatus kan veranderen terwijl de asynchrone code wordt uitgevoerd. Als u de widgetstatus in een asynchrone context wilt openen, geeft u deze door als argument. Als u bijvoorbeeld de volgende code hebt die threads gebruikt:

    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 raadt u aan in plaats daarvan een argument te gebruiken:

    # 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()
    
  • Widgets kunnen in het algemeen geen argumenten doorgeven tussen verschillende talen in een notitieblok. U kunt een widget arg1 maken in een Python-cel en deze gebruiken in een SQL- of Scala-cel als u één cel tegelijk uitvoert. Dit werkt echter niet als u Alles uitvoeren gebruikt of het notebook als taak uitvoert. Enkele tijdelijke oplossingen zijn:

    • Voor notitieblokken die geen talen combineren, kunt u voor elke taal een notitieblok maken en de argumenten doorgeven wanneer u het notebook uitvoert.
    • U kunt de widget openen met behulp van een spark.sql() oproep. Bijvoorbeeld in Python: spark.sql("select getArgument('arg1')").take(1)[0][0].

Bamboolib

Beperkingen van bamboolib:

  • Het gebruik van bamboolib voor gegevenswrangling is beperkt tot ongeveer 10 miljoen rijen. Deze limiet is gebaseerd op pandas en de rekenresources van uw cluster.
  • Het gebruik van bamboolib voor gegevensvisualisaties is beperkt tot ongeveer 10 duizend rijen. Deze limiet is gebaseerd op plotly.