Sdílet prostřednictvím


Známá omezení poznámkových bloků Databricks

Tento článek se zabývá známými omezeními poznámkových bloků Databricks. Další limity prostředků najdete v tématu Omezení prostředků.

Změna velikosti poznámkového bloku

  • Jednotlivé buňky poznámkového bloku mají vstupní limit 6 MB.
  • Maximální velikost poznámkového bloku pro automatické ukládání, import, export a klonování snímků revizí je 10 MB.
  • Poznámkové bloky můžete uložit ručně až do 32 MB.

Tabulka výsledků poznámkového bloku

  • Výsledky tabulky jsou omezené na 10 tisíc řádků nebo 2 MB podle toho, co je nižší.
  • Clustery úloh mají maximální velikost výstupu poznámkového bloku 30 MB.
  • Výsledky ne tabulkových příkazů mají limit 20 MB.
  • Ve výchozím nastavení vrátí textové výsledky maximálně 50 000 znaků. Pokud máte Databricks Runtime 12.2 LTS a vyšší, můžete tento limit zvýšit nastavením vlastnosti spark.databricks.driver.maxReplOutputLengthkonfigurace Sparku .

Ladicí program poznámkového bloku

Omezení ladicího programu poznámkového bloku:

  • Ladicí program funguje jenom s Pythonem. Nepodporuje jazyk Scala ani R.
  • Ladicí program nefunguje u clusterů v režimu sdíleného přístupu.
  • Ladicí program nepodporuje krokování do externích souborů nebo modulů.
  • Pokud je aktivní ladicí relace, nemůžete v poznámkovém bloku spustit jiné příkazy.

Poznámkové bloky SQL Warehouse

Omezení poznámkových bloků SQL Warehouse:

  • Při připojení ke skladu SQL mají kontexty spouštění časový limit nečinnosti 8 hodin.

ipywidgets

Omezení ipywidgets:

  • Poznámkový blok, který používá ipywidgets, musí být připojený ke spuštěném clusteru.
  • Stavy widgetů se v relacích poznámkového bloku nezachovají. Aby se buňky widgetu vykreslovaly pokaždé, když připojíte poznámkový blok ke clusteru, musíte je znovu spustit.
  • Protokoly IPywidget pro heslo a řadič nejsou podporovány.
  • Widgety HTMLMath a Label s výrazy LaTeX se nevykreslují správně. (Například widgets.Label(value=r'$$\frac{x+1}{x-1}$$') se nevykresluje správně.)
  • Widgety se nemusí správně vykreslit, pokud je poznámkový blok v tmavém režimu, zejména barevné widgety.
  • Výstupy widgetu nelze použít v zobrazeních řídicího panelu poznámkového bloku.
  • Maximální velikost datové části zprávy pro ipywidget je 5 MB. Widgety, které používají obrázky nebo velká textová data, nemusí být správně vykreslovány.

Widgety Databricks

Omezení widgetů Databricks:

  • V poznámkovém bloku lze vytvořit maximálně 512 widgetů.

  • Název widgetu je omezený na 1024 znaků.

  • Popisek widgetu je omezený na 2048 znaků.

  • Do textového widgetu lze zadat maximálně 2048 znaků.

  • Pro vícenásobný výběr, pole se seznamem nebo rozevírací widget může být maximálně 1024 možností.

  • Existuje známý problém, kdy se po stisknutí tlačítka Spustit vše nemusí správně vymazat stav widgetu, a to i po vymazání nebo odebrání widgetu v kódu. Pokud k tomu dojde, zobrazí se nesrovnalosti mezi vizuálem widgetu a vytištěnými stavy. Tento problém můžete obejít opětovným spuštěním buněk jednotlivě. Aby se tomuto problému zabránilo úplně, databricks doporučuje používat nástroje ipywidgets.

  • K stavu widgetu byste neměli přistupovat přímo v asynchronních kontextech, jako jsou vlákna, podprocesy nebo strukturované streamování (foreachBatch), protože stav widgetu se může změnit, když je spuštěn asynchronní kód. Pokud potřebujete získat přístup ke stavu widgetu v asynchronním kontextu, předejte ho jako argument. Pokud máte například následující kód, který používá vlákna:

    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 místo toho doporučuje použít argument:

    # 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()
    
  • Widgety nemůžou obecně předávat argumenty mezi různými jazyky v poznámkovém bloku. Widget arg1 můžete vytvořit v buňce Pythonu a použít ho v buňce SQL nebo Scala, pokud poběžíte po jedné buňce. To ale nefunguje, pokud jako úlohu použijete Spustit vše nebo spustíte poznámkový blok. Mezi alternativní řešení patří:

    • Pro poznámkové bloky, které nekombinují jazyky, můžete vytvořit poznámkový blok pro každý jazyk a předat argumenty při spuštění poznámkového bloku.
    • K widgetu se dostanete pomocí spark.sql() volání. Například v Pythonu: spark.sql("select getArgument('arg1')").take(1)[0][0].