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.maxReplOutputLength
konfigurace 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
- 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]
.