Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Použijte notebookutils.session ke správě životního cyklu relací poznámkových bloků v Microsoft Fabric. Interaktivní relaci můžete zastavit nebo restartovat interpret Pythonu pro vyčištění, správu prostředků a obnovení chyb.
Následující tabulka uvádí dostupné metody správy relací:
| Metoda | Signature | Description |
|---|---|---|
stop |
stop(): void |
Zastaví aktuální interaktivní relaci asynchronně a uvolní prostředky. V noteboocích PySpark, Scala a R přijímá volitelný parametr detach. |
restartPython |
restartPython(): void |
Restartuje interpret Pythonu a zachová kontext Sparku beze změny. Dostupné jenom v poznámkových blocích Python a PySpark. |
Poznámka:
Tato stop() metoda je dostupná v poznámkových blocích Python, PySpark, Scala a R. V poznámkových blocích PySpark stop(), Scala a R přijímá volitelný parametr detach: stop(detach=True). Pokud je detach nastavena na True (výchozí hodnota), relace se odpojí od relace s vysokou souběžností, místo aby byla úplně zastavena.
Poznámka:
Tato restartPython() metoda je dostupná jenom v poznámkových blocích Python a PySpark. Není k dispozici v poznámkových blocích Scala nebo R.
Důležité
V režimu spuštění pipeline se relace po vykonání kódu automaticky zastaví. Rozhraní session.stop() API je primárně určené pro interaktivní relace, ve kterých chcete relaci zastavit programově místo kliknutí na tlačítko Zastavit.
Poznámka:
Metoda stop() funguje asynchronně na pozadí a uvolňuje prostředky relace Spark, čímž jsou zpřístupněny pro jiné relace ve stejném fondu.
Zastavení interaktivní relace
Místo ručního výběru tlačítka stop můžete interaktivní relaci zastavit voláním rozhraní API ve vašem kódu.
Rozhraní notebookutils.session.stop() API zastaví aktuální interaktivní relaci asynchronně na pozadí. Zastaví také relaci Spark a uvolní prostředky obsazené relací, takže jsou k dispozici pro jiné relace ve stejném fondu.
Poznámka:
Kód se po session.stop() nespustí. Po zastavení relace dojde ke ztrátě všech dat v paměti a proměnných. Před voláním session.stop()uložte důležitá data .
Návratové chování
Metoda stop() nevrací hodnotu. Zahajuje asynchronní ukončení relace.
Restartování interpreta Pythonu
Slouží notebookutils.session.restartPython() k restartování interpreta Pythonu.
Poznámka:
V poznámkových blocích PySpark (Spark) se restartuje pouze interpret Pythonu, restartPython() zatímco kontext Sparku zůstane zachován. V poznámkových blocích Pythonu, které nemají kontext Sparku, restartPython() restartuje celý proces Pythonu.
notebookutils.session.restartPython()
Návratové chování
Metoda restartPython() nevrací hodnotu. Po dokončení restartování bude provádění kódu pokračovat v další buňce.
Mějte na paměti tyto aspekty:
- V případě odkazu na poznámkový blok
restartPython()se restartuje pouze interpret Pythonu aktuálního poznámkového bloku, na který se odkazuje. Nemá vliv na nadřazený poznámkový blok. - Ve výjimečných případech může příkaz selhat kvůli mechanismu reflexe Sparku. Přidání mechanismu opakování může tento problém zmírnit.
- Po volání
restartPython()bude provádění kódu pokračovat v další buňce. Importujte nově nainstalované balíčky do následující buňky.
Vzory použití
Plynulé vyčištění před zastavením
Ujistěte se pomocí bloku try-finally, že se před zastavením relace spustí vyčištění:
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()
Instalace balíčků a restartování interpreta
Po instalaci nových balíčků piprestartujte interpret Pythonu, aby byly dostupné balíčky:
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 volání restartPython()bude provádění kódu pokračovat v další buňce. Importujte nově nainstalované balíčky do následující buňky.
Obnovení po chybě s restartem interpretu
Pokud interpret Pythonu dosáhne poškozeného stavu, můžete se pokusit o obnovení restartováním:
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")
Vyčištění prostředků před zastavením
Před ukončením relace vyčistěte připojené cesty, dočasné soubory a mezipaměti:
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()
Podmíněné zastavení pouze pro interaktivní režim
Před zastavením zkontrolujte kontext spuštění, abyste se vyhnuli zbytečným voláním v režimu 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")
Návod
Před voláním session.stop() nebo session.restartPython() vždy uložte důležité výsledky, například zápisem DataFrames do úložiště nebo protokolováním výstupu. Obě operace zahodí všechny stavy uložené v paměti.