Condividi tramite


Interpretare i codici di errore in Synapse Analytics

Esistono molti fattori che possono influire sul motivo per cui un'applicazione Spark ha esito negativo in Azure Synapse Analytics. Ad esempio, il motivo può essere ascrivibile a un errore di sistema o perfino a un errore correlato all'utente. In precedenza, tutti gli errori corrispondenti ai processi non riusciti in Synapse Analytics venivano visualizzati con un codice di errore generico LIVY_JOB_STATE_DEAD. Tale codice di errore non forniva ulteriori informazioni sul motivo per cui il processo non aveva buon fine. È necessario un impegno significativo per identificare la causa radice (investigando nel driver, nell'executor, nell'evento Spark, nei log Livy) e trovare una risoluzione.

Screenshot of Apache Spark error code without detailed message.

È stato introdotto un elenco più preciso di codici di errore che sostituiscono il messaggio generico precedente. Il nuovo messaggio descrive la causa dell'errore. Ogni volta che un processo non riesce in Azure Synapse Analytics, la funzionalità di gestione degli errori analizza e controlla i log nel back-end per identificare la causa radice. Viene quindi visualizzato un messaggio nel riquadro di monitoraggio insieme ai passaggi per risolvere il problema.

Screenshot of Apache Spark error code with detailed message.

Abilitare la classificazione degli errori in Synapse

È possibile abilitare o disabilitare la funzionalità di classificazione degli errori impostando la configurazione Spark seguente su true o false a livello di processo o pool:

livy.rsc.synapse.error-classification.enabled

La sezione seguente elenca alcuni tipi di errore attualmente supportati. Stiamo affinando continuamente e aggiungendo altro a questi codici di errore attraverso il miglioramento del modello.

Categorie di codici di errore

Ogni codice di errore rientra in uno dei quattro bucket seguenti:

  1. Utente - Indica un errore dell'utente
  2. Sistema - Indica un errore di sistema
  3. Ambiguo - Potrebbe essere un errore utente o di sistema
  4. Sconosciuto - Nessuna classificazione è ancora disponibile, probabilmente perché il tipo di errore non è incluso nel modello

Esempi di codice di errore per ogni tipo di classificazione

Spark_User_TypeError_TypeNotIterable

In Python, l'errore TypeError: argument of type 'insert type' is not iterable si verifica quando l'operatore di appartenenza (in, non in) viene usato per convalidare l'appartenenza di un valore in oggetti non iterabili, ad esempio elenco, tupla, dizionario. Ciò è generalmente dovuto alla ricerca di un valore in un oggetto non iterabile. Soluzioni possibili:

  • Verificare se il valore è presente nell'oggetto iterabile.
  • Se si desidera controllare un valore rispetto un altro, usare l'operatore logico anziché quello di appartenenza.
  • Se l'operatore di appartenenza contiene il valore "None", non sarà in grado di eseguire l'iterazione e deve essere eseguito un controllo Null o un valore predefinito assegnato.
  • Verificare se è effettivamente possibile verificare il tipo del valore usato essere e se la digitazione è corretta.

Spark_System_ABFS_OperationFailed

Un'operazione con ADLS Gen2 non è riuscita.

Questo errore si verifica in genere a causa di un problema di autorizzazioni.

Assicurarsi che per tutte le risorse di ADLS Gen2 a cui si fa riferimento nel processo Spark, il ruolo di controllo degli accessi in base al ruolo sia "Collaboratore ai dati del BLOB di archiviazione" negli account di archiviazione da cui è previsto che il processo venga letto e scritto. Controllare i log per questa applicazione Spark. Andare a Synapse Studio e selezionare la scheda Monitoraggio nel riquadro sulla sinistra. Nella sezione Attività selezionare Applicazioni Apache Spark e individuare il processo Spark nell'elenco. Per il nome dell'account di archiviazione di ADLS Gen2 che riscontra questo problema, esaminare i log disponibili nella scheda Log nella parte inferiore di questa pagina.

Spark_Ambiguous_ClassLoader_NoClassDefFound

Impossibile trovare una classe richiesta dal codice quando è stato eseguito lo script.

Per la documentazione sulla gestione dei pacchetti, vedere le pagine seguenti:

Per gli scenari di notebook: Apache Spark gestisce i pacchetti per processi interattivi

Per gli scenari batch Spark (vedere la sezione 6): Apache Spark - gestione dei pacchetti per i processi batch

Assicurarsi che tutte le dipendenze di codice siano incluse nelle esecuzioni di JAR Synapse. Se non si include o non è possibile includere JAR di terze parti con il proprio codice, assicurarsi che tutte le dipendenze siano incluse nei pacchetti dell'area di lavoro per il pool di Spark in cui si sta eseguendo il codice, oppure che siano incluse nell'elenco "File di riferimento" per l'invio in batch Spark. Per altre informazioni, vedere la documentazione di cui sopra.

Spark_Unknown_Unknown_java.lang.Exception

Errore sconosciuto, il modello non è riuscito a classificare.

I codici di errore (inclusi e oltre l'elenco illustrato in precedenza) insieme alle istruzioni per la risoluzione del problema verranno visualizzati nel riquadro degli errori dell'applicazione Synapse Studio se questa funzionalità è abilitata.

Nota

Se sono stati creati strumenti per il processo di monitoraggio di Synapse che verifica la presenza di un processo non riuscito filtrando il codice di errore LIVY_JOB_STATE_DEAD, l'app non funzionerà più. Poiché i codici di errore restituiti sarebbero diversi, come indicato in precedenza. Modificare gli script come pertinente per usare questa funzionalità o disabilitarla se non è necessaria.