A Databricks-jegyzetfüzetek ismert korlátozásai
Ez a cikk a Databricks-jegyzetfüzetek ismert korlátozásait ismerteti. További erőforráskorlátok: Erőforráskorlátok.
Jegyzetfüzet méretezése
- Az egyes jegyzetfüzetcellák bemeneti korlátja 6 MB.
- Az automatikus mentéshez, importáláshoz, exportáláshoz és klónozáshoz használt korrektúra-pillanatképek maximális jegyzetfüzetmérete 10 MB.
- Legfeljebb 32 MB-ig manuálisan mentheti a jegyzetfüzeteket.
jegyzetfüzet eredménytáblája
- A táblaeredmények legfeljebb 10 000 sort vagy 2 MB-ot érhetnek el, attól függően, hogy melyik az alacsonyabb.
- A feladatfürtök maximális notebookkimeneti mérete 30 MB.
- A nem táblázatos parancsok eredményeinek korlátja 20 MB.
- Alapértelmezés szerint a szöveges eredmények legfeljebb 50 000 karaktert adnak vissza. A Databricks Runtime 12.2 LTS és újabb verziója esetén a Spark konfigurációs tulajdonság
spark.databricks.driver.maxReplOutputLength
beállításával növelheti ezt a korlátot.
Jegyzetfüzet hibakeresője
A jegyzetfüzet hibakeresőjének korlátozásai:
- A hibakereső csak a Pythonnal működik. Nem támogatja a Scalát vagy az R-t.
- A hibakereső eléréséhez a jegyzetfüzetnek az alábbi számítási erőforrások egyikéhez kell csatlakoznia:
- Kiszolgáló nélküli feldolgozás
- Fürt hozzáférési módja beállítva egyfelhasználósra a Databricks Runtime 13.3 LTS-ben és újabb verziókban
- A hozzáférési módú fürt a Nincs elkülönítés, megosztott beállítással a Databricks Runtime 13.3 LTS és újabb verziókban
- A hozzáférési móddal rendelkező fürt a megosztott értékre van beállítva a Databricks Runtime 14.3 LTS-ben és az újabb verziókban.
- A hibakereső nem támogatja a külső fájlokba vagy modulokba való lépést.
- Ha egy hibakeresési munkamenet aktív, nem futtathat más parancsokat a jegyzetfüzetben.
- A hibakereső nem támogatja az alfolyamatok hibakeresését, ha kiszolgáló nélküli számítási és hozzáférési módú fürtökhöz csatlakozik,megosztott.
SQL Warehouse-jegyzetfüzetek
Az SQL Warehouse-jegyzetfüzetek korlátozásai:
- SQL-tárházhoz csatlakoztatva a végrehajtási kontextusoknak 8 óra az üresjárati időkorlátja.
ipywidgets
- Az ipywidgeteket használó jegyzetfüzeteket egy futó fürthöz kell csatolni.
- A vezérlőállapotok nem maradnak meg a jegyzetfüzet-munkamenetekben. A vezérlőcellák újrafuttatásával megjelenítheti őket minden alkalommal, amikor a jegyzetfüzetet egy fürthöz csatolja.
- A jelszó és a vezérlő ipywidgets nem támogatott.
- A HtmlMath és a Label widgetek LaTeX-kifejezésekkel nem jelennek meg megfelelően. (Például
widgets.Label(value=r'$$\frac{x+1}{x-1}$$')
nem jelenik meg megfelelően.) - Előfordulhat, hogy a widgetek nem jelennek meg megfelelően, ha a jegyzetfüzet sötét módban van, különösen színes widgetek esetén.
- A widgetkimenetek nem használhatók a jegyzetfüzet irányítópult-nézeteiben.
- Az ipywidget üzeneteinek maximális hasznos adatmérete 5 MB. Előfordulhat, hogy a képeket vagy nagy szöveges adatokat használó widgetek nem lesznek megfelelően renderelve.
Databricks-vezérlők
A Databricks-vezérlők korlátozásai:
Legfeljebb 512 widget hozható létre egy jegyzetfüzetben.
A widget neve legfeljebb 1024 karakter hosszúságú lehet.
A widgetcímke legfeljebb 2048 karakter hosszúságú lehet.
Szöveg widgetbe legfeljebb 2048 karakter adható meg.
Többválasztós, kombinált lista vagy legördülő vezérlő esetén legfeljebb 1024 választási lehetőség közül választhat.
Van egy ismert probléma, amely miatt előfordulhat, hogy a vezérlő állapota nem kerül megfelelően törlésre Az összes futtatásagomb megnyomása után, még akkor sem, ha a vezérlőt a kódban törlik vagy eltávolítják. Ha ez történik, eltérést fog tapasztalni a widget vizualizációja és a nyomtatott állapotok között. Előfordulhat, hogy a cellák egyenkénti újrafuttatása megkerüli ezt a problémát. A probléma teljes elkerülése érdekében a Databricks az ipywidgets használatát javasolja.
Nem szabad közvetlenül aszinkron környezetekben, például szálakban, alfolyamatokban vagy strukturált streamelésben (foreachBatch) hozzáférni a widget állapotához, mivel a widget állapota megváltozhat az aszinkron kód futtatása közben. Ha a widget állapotához aszinkron környezetben kell hozzáférnie, adja át argumentumként. Ha például a következő kóddal rendelkezik, amely szálakat használ:
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()
A Databricks ehelyett egy argumentum használatát javasolja:
# 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()
A widgetek általában nem tudnak argumentumokat átadni a jegyzetfüzet különböző nyelvei között. Létrehozhat egy widgetet
arg1
egy Python-cellában, és használhatja egy SQL- vagy Scala-cellában, ha egyszerre egy cellát futtat. Ez azonban nem működik, ha az Összes futtatása vagy a jegyzetfüzet futtatása feladatként fut. Néhány kerülő megoldás a következő:- Az olyan jegyzetfüzetek esetében, amelyek nem keverik a nyelveket, létrehozhat egy jegyzetfüzetet az egyes nyelvekhez, és a jegyzetfüzet futtatásakor átadhatja az argumentumokat.
- A widgetet hívással
spark.sql()
érheti el. Például a Pythonban:spark.sql("select getArgument('arg1')").take(1)[0][0]
.