Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Usare notebookutils.runtime per leggere le informazioni di contesto sulla sessione del notebook corrente. È possibile recuperare metadati come il nome del notebook, i dettagli dell'area di lavoro, la configurazione lakehouse predefinita, i flag di esecuzione della pipeline e la gerarchia di esecuzione dei riferimenti senza modificare alcuno stato.
Usare il contesto di runtime per:
- Configurazione dinamica : adattare il comportamento del notebook in base all'ambiente di esecuzione.
- Logica condizionale – Logica ramificata, a seconda che il notebook venga eseguito in una pipeline o in modalità interattiva.
- Debug e monitoraggio : includere le proprietà del contesto nell'output del log e correlare le esecuzioni correlate.
- Audit trails: acquisisci i metadati di esecuzione per il rilevamento della conformità e della tracciabilità.
Annotazioni
Il contesto di runtime è disponibile nei notebook Python, PySpark, Scala e R. Il contesto è di sola lettura. Non è possibile modificare le proprietà restituite da notebookutils.runtime.context. Alcune proprietà vengono popolate solo in contesti specifici, ad esempio esecuzioni di riferimenti o esecuzioni di pipeline, e potrebbero restituire null o vuoti valori in caso contrario.
Visualizzare il contesto della sessione
Usare notebookutils.runtime.context per visualizzare le informazioni sul contesto per la sessione corrente, inclusi il nome del notebook, il lakehouse predefinito, le informazioni sull'area di lavoro e se la sessione viene eseguita in una pipeline.
Nella tabella seguente vengono descritte le proprietà disponibili.
| Proprietà | Tipo | Descrizione | Disponibilità |
|---|---|---|---|
currentNotebookName |
String | Nome del notebook corrente. | Tutti i contesti |
currentNotebookId |
String | ID univoco del notebook corrente. | Tutti i contesti |
currentWorkspaceName |
String | Nome dell'area di lavoro corrente. | Tutti i contesti |
currentWorkspaceId |
String | ID dell'area di lavoro corrente. | Tutti i contesti |
defaultLakehouseName |
String | Il nome visualizzato del lakehouse predefinito, se definito. | Quando il lakehouse predefinito è collegato |
defaultLakehouseId |
String | ID del lakehouse predefinito, se definito. | Quando il lakehouse predefinito è collegato |
defaultLakehouseWorkspaceName |
String | Nome dell'area di lavoro del lakehouse predefinito, se definito. | Quando il lakehouse predefinito è collegato |
defaultLakehouseWorkspaceId |
String | ID area di lavoro del lakehouse predefinito, se definito. | Quando il lakehouse predefinito è collegato |
currentRunId |
String | In un'esecuzione di riferimento l'ID esecuzione corrente. | Solo esecuzioni di riferimento |
parentRunId |
String | Nell'ambito di un'esecuzione di riferimento con esecuzioni annidate, questo ID è l'ID di esecuzione padre. | Solo esecuzioni di riferimenti annidati |
rootRunId |
String | In un'esecuzione di riferimento con esecuzioni annidate, questo ID è l'ID di esecuzione radice. | Solo esecuzioni di riferimenti annidati |
isForPipeline |
Booleano | Indica se l'esecuzione della pipeline è prevista. | Tutti i contesti |
isForInteractive |
Booleano | Indica se l'esecuzione è una sessione interattiva. | Tutti i contesti |
isReferenceRun |
Booleano | Indica se l'esecuzione corrente è un'esecuzione di riferimento. | Tutti i contesti |
referenceTreePath |
String | Struttura ad albero delle sequenze di riferimenti annidati, utilizzata solo per la gerarchia degli snapshot nella pagina di monitoraggio di L2. | Solo esecuzioni di riferimenti annidati |
rootNotebookId |
String | ID del notebook root in un'esecuzione di riferimento. | Solo esecuzioni di riferimento |
rootNotebookName |
String | Nome del notebook radice in un'esecuzione di riferimento. | Solo esecuzioni di riferimento |
rootWorkspaceId |
String | ID dell'area di lavoro del notebook principale in un'esecuzione di riferimento. | Solo esecuzioni di riferimento |
rootWorkspaceName |
String | Nome dell'area di lavoro del notebook principale in un'esecuzione di riferimento. | Solo esecuzioni di test |
activityId |
String | ID del job Livy per l'attività corrente. | Tutti i contesti |
hcReplId |
String | ID REPL in modalità ad alta concorrenza. | Solo modalità di concorrenza elevata |
clusterId |
String | Identità del cluster Synapse Spark. | Tutti i contesti |
poolName |
String | Nome del pool di Spark in uso. | Tutti i contesti |
environmentId |
String | ID dell'ambiente in cui è in esecuzione il processo. | Tutti i contesti |
environmentWorkspaceId |
String | ID dell'area di lavoro del contesto. | Tutti i contesti |
userId |
String | ID utente dell'utente corrente. | Tutti i contesti |
userName |
String | Nome utente dell'utente corrente. | Tutti i contesti |
currentKernel |
String | Nome del kernel del notebook corrente. | Solo notebook di programmazione Python |
productType |
String | Identificatore del tipo di prodotto , ad esempio Fabric. |
Tutti i contesti |
Esempi di utilizzo
Accedere alle informazioni di base sul contesto
Memorizzare nella cache l'oggetto contesto quando è necessario leggere più proprietà.
context = notebookutils.runtime.context
print(f"Notebook: {context['currentNotebookName']}")
print(f"Workspace: {context['currentWorkspaceName']}")
print(f"Lakehouse: {context['defaultLakehouseName'] or 'None'}")
Controllare la pipeline rispetto all'esecuzione interattiva
Usare il flag isForPipeline per diramare la logica in base alla modalità di esecuzione. Ad esempio, è possibile applicare una gestione degli errori più rigorosa nelle esecuzioni della pipeline.
context = notebookutils.runtime.context
if context['isForPipeline']:
print("Pipeline mode: Strict error handling")
error_handling = "strict"
max_retries = 3
elif context['isReferenceRun']:
print("Running as a referenced notebook")
error_handling = "strict"
max_retries = 2
else:
print("Interactive mode: Lenient error handling")
error_handling = "lenient"
max_retries = 1
Suggerimento
Usare isForPipeline e isReferenceRun insieme per implementare la diramazione a tre vie per contesti di esecuzione diversi. Questo modello consente di personalizzare i tentativi di ripetizione, la verbosità dei log e le strategie di gestione degli errori. Per i carichi di lavoro di produzione, le esecuzioni di pipeline e riferimenti richiedono in genere una gestione degli errori più rigorosa rispetto alle sessioni interattive.
Ispezionare la gerarchia della corsa di riferimento
Quando un notebook viene eseguito come parte di un'esecuzione di riferimento annidata, è possibile tracciare la gerarchia completa dall'esecuzione corrente alla radice:
context = notebookutils.runtime.context
if context['isReferenceRun']:
print("Reference Run Context:")
print(f" Current Run ID: {context['currentRunId']}")
print(f" Parent Run ID: {context['parentRunId']}")
print(f" Root Run ID: {context['rootRunId']}")
print(f" Root Notebook: {context['rootNotebookName']}")
else:
print("Not a reference run")
Includere il contesto nella registrazione
Arricchire i messaggi di log con il contesto di esecuzione per semplificare il debug e il monitoraggio: