Poznámka
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete sa skúsiť prihlásiť alebo zmeniť adresáre.
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete skúsiť zmeniť adresáre.
Použite notebookutils.session na správu životného cyklu zápisových relácií v Microsoft Fabric. Môžete zastaviť interaktívnu reláciu alebo reštartovať Python interpreter na čistenie, správu zdrojov a obnovu chýb.
Nasledujúca tabuľka uvádza dostupné metódy správy relácií:
| Method | Podpis | Description |
|---|---|---|
stop |
stop(): void |
Zastaví aktuálnu interaktívnu reláciu asynchrónne a uvoľní zdroje. V notebookoch PySpark, Scala a R akceptuje voliteľný detach parameter. |
restartPython |
restartPython(): void |
Reštartuje Python interpreter, pričom Spark kontext zostane nedotknutý. Dostupné len v Python a PySpark notebookoch. |
Poznámka
Metóda stop() je dostupná v notebookoch Python, PySpark, Scala a R. V zápisníkoch PySpark, Scala a R akceptuje stop() voliteľný detach parameter: stop(detach=True). Keď detach je ( True predvolené), relácia sa odpojí od relácie s vysokou súbežnosťou namiesto úplného zastavenia.
Poznámka
Táto restartPython() metóda je dostupná iba v zápisníkoch v Pythone a PySparku. Nie je dostupný v zápisníkoch Scala ani R.
Dôležité
V režime vykonávania pipeline sa relácie automaticky zastavia po dokončení kódu. API session.stop() je primárne určené pre interaktívne relácie, kde chcete reláciu zastaviť programovo namiesto kliknutia na tlačidlo stop.
Poznámka
Metóda stop() funguje asynchrónne na pozadí a uvoľňuje zdroje relácií Spark, aby boli dostupné aj iným reláciám v tom istom poole.
Zastavenie interaktívnej relácie
Namiesto manuálneho výberu tlačidla stop môžete interaktívnu reláciu zastaviť zavolaním API vo vašom kóde.
notebookutils.session.stop()
notebookutils.session.stop() API zastaví aktuálnu interaktívnu reláciu asynchrónne na pozadí. Tiež zastaví Spark session a uvoľní zdroje obsadené reláciou, takže sú dostupné aj pre iné relácie v tom istom poole.
Poznámka
Kód po ňom session.stop() sa nespustí. Všetky dáta a premenné v pamäti sa stratia po ukončení relácie. Uložte si dôležité dáta predtým, než zavoláte session.stop().
Správanie návratu
Metóda stop() nevracia hodnotu. Spustí asynchrónne vypnutie relácie.
Reštartovanie interpreta jazyka Python
Použite notebookutils.session.restartPython() na reštart Python interpretera.
Poznámka
V zápisníkoch PySpark (Spark) sa restartPython() reštartuje iba Python interpreter, pričom kontext Spark zostáva neporušený. V Python zápisníkoch, ktoré nemajú Spark kontext restartPython() , sa celý Python proces reštartuje.
notebookutils.session.restartPython()
Správanie návratu
Metóda restartPython() nevracia hodnotu. Po dokončení reštartu pokračuje vykonávanie kódu v ďalšej bunke.
Majte na pamäti tieto úvahy:
- V prípade referencie zápisníka sa
restartPython()reštartuje iba Python interpreter aktuálneho zápisníka, na ktorý sa odkazuje. Neovplyvňuje to rodičovský zápisník. - V zriedkavých prípadoch môže príkaz zlyhať kvôli mechanizmu odrazu Spark. Pridanie opätovného pokusu môže problém zmierniť.
- Po zavolaní
restartPython()pokračuje vykonávanie kódu v ďalšej bunke. Importujte novo nainštalované balíky do nasledujúcej bunky.
Vzorce používania
Elegantné upratovanie pred zastavením
Použite blok, try-finally aby ste zabezpečili, že upratovanie prebehne pred ukončením relácie:
try:
print("Starting data processing...")
# ... processing logic here ...
except Exception as e:
print(f"Processing failed: {str(e)}")
raise
finally:
print("Performing cleanup...")
try:
notebookutils.fs.unmount("/mnt/data")
except:
pass
notebookutils.session.stop()
Nainštalujte balíky a reštartujte interpreter
Po inštalácii nových balíkov s pip, reštartujte Python interpreter, aby boli balíky dostupné:
import subprocess
import sys
packages = ["pandas==2.0.0", "numpy==1.24.0"]
print("Installing packages...")
for package in packages:
subprocess.check_call([sys.executable, "-m", "pip", "install", package])
print("Restarting Python interpreter...")
notebookutils.session.restartPython()
Poznámka
Po zavolaní restartPython()pokračuje vykonávanie kódu v ďalšej bunke. Importujte novo nainštalované balíky do nasledujúcej bunky.
Obnova chýb s reštartom interpretera
Ak Python interpret dosiahne poškodený stav, môžete skúsiť obnovu jeho reštartom:
def recover_from_error():
"""Attempt to recover from errors by restarting Python."""
try:
test_value = 1 + 1
except Exception as e:
print(f"Python interpreter error: {str(e)}")
print("Restarting Python interpreter...")
notebookutils.session.restartPython()
return False
return True
if not recover_from_error():
print("Recovery attempted - check next cell")
Čistenie zdrojov pred zastavením
Vyčistite pripojené cesty, dočasné súbory a cache pred ukončením relácie:
try:
df = spark.range(0, 1000000)
df.cache()
result = df.count()
print(f"Processing completed: {result}")
except Exception as e:
print(f"Operation failed: {str(e)}")
raise
finally:
spark.catalog.clearCache()
print("Stopping session to free resources...")
notebookutils.session.stop()
Podmienený stop len pre interaktívny režim
Pred zastavením skontrolujte kontext vykonávania, aby ste predišli zbytočným volaniam v režime pipeline:
context = notebookutils.runtime.context
if not context['isForPipeline']:
print("Interactive mode: stopping session...")
notebookutils.session.stop()
else:
print("Pipeline mode: session stops automatically after execution")
Prepitné
Vždy uložte dôležité výsledky – napríklad zápis DataFrames do úložiska alebo zaznamenávanie výstupu – pred zavolaním session.stop() alebo session.restartPython(). Obe operácie vyradia všetok stav v pamäti.