Megosztás a következőn keresztül:


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 összes legfeljebb 100 MB méretű jegyzetfüzet esetében a változatok pillanatképeinek automatikus mentése, manuális mentése és klónozása támogatott.
  • Az IPYNB-jegyzetfüzetek importálása és exportálása támogatott legfeljebb 100 MB méretig.
  • Az importálás és exportálás 10 MB-ig támogatott a DBC-archívumok, HTML-, R Markdown- és forrásjegyzetfüzetek esetében.
  • Az egyes jegyzetfüzetcellák bemeneti korlátja 6 MB.

A jegyzetfüzet celláinak kimenetei

  • 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 Databricks Runtime 17.0-s vagy újabb verziójában, valamint a 3. rendszerű szerver nélküli környezetben:
    • A cellakimenet maximális mérete alapértelmezés szerint 10 MB.
    • Ez a korlát bármely 1 MB és 20 MB közötti értékre testre szabható a Python-cellákban a következő cellavariáns használatával: %set_cell_max_output_size_in_mb <size_in_MB>. Ez a korlát ezután a jegyzetfüzet összes cellájában érvényes lesz.
    • Ha a cellakimenet túllépi a konfigurált méretkorlátot, a rendszer csonkolja a kimenetet, hogy elférjen a korláton belül. A csonkolást úgy alkalmazza a rendszer, hogy a lehető legtöbb hasznos kimenetet megőrizze.
  • A Databricks Runtime 16.4 LTS-ben és annál alacsonyabb verziókban, valamint a 2-es vagy annál alacsonyabb kiszolgálói környezetben:
    • A szöveges eredmények legfeljebb 50 000 karaktert adnak vissza.
    • A Databricks Runtime 12.2-es vagy újabb verziója esetén ezt a korlátot akár 20 MB-ra is növelheti a Spark konfigurációs tulajdonságának spark.databricks.driver.maxReplOutputLengthbeállításával.
    • Ha a cellakimenet túllépi a konfigurált méretkorlátot, a kimenet teljesen el lesz vetve.

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:
  • A hibakereső nem támogatja a Python-kódtárakba 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 standardhozzáférési módú fürtökhöz csatlakozik.

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 ipywidgets korlátozásai:

  • 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-widgetek

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