Tolka felkoder i Synapse Analytics

Det finns många faktorer som kan påverka varför ett Spark-program misslyckas i Azure Synapse Analytics i dag. Det kan till exempel bero på ett systemfel eller till och med ett användarrelaterat fel. Tidigare visades alla fel som motsvarar misslyckade jobb i Synapse Analytics med en allmän felkod som visar LIVY_JOB_STATE_DEAD. Den här felkoden gav ingen ytterligare inblick i varför jobbet har misslyckats. Det krävs mycket arbete för att identifiera rotorsaken genom att undersöka drivrutinen, utföraren, Spark-händelsen, Livy-loggarna och hitta en lösning.

Skärmbild av Apache Spark-felkod utan detaljerat meddelande.

Vi har infört en mer exakt lista över felkoder som ersätter det tidigare allmänna meddelandet. Det nya meddelandet beskriver orsaken till felet. När ett jobb misslyckas på Azure Synapse Analytics parsas felhanteringsfunktionen och loggarna på serverdelen kontrolleras för att identifiera rotorsaken. Sedan visas ett meddelande för användaren i övervakningsfönstret tillsammans med stegen för att lösa problemet.

Skärmbild av Apache Spark-felkod med detaljerat meddelande.

Aktivera felklassificering i Synapse

Felklassificeringsfunktionen kan aktiveras eller inaktiveras genom att ange följande Spark-konfiguration till true eller false på jobb- eller poolnivå:

livy.rsc.synapse.error-classification.enabled

I följande avsnitt visas några feltyper som stöds för närvarande. Vi förfinar kontinuerligt och lägger till mer i dessa felkoder genom att förbättra vår modell.

Felkodskategorier

Varje felkod hamnar under någon av följande fyra bucketar:

  1. Användare – anger ett användarfel
  2. System – anger ett systemfel
  3. Tvetydigt – kan vara antingen användar- eller systemfel
  4. Okänd – Ingen klassificering ännu, förmodligen eftersom feltypen inte ingår i modellen

Exempel på felkod för varje klassificeringstyp

Spark_User_TypeError_TypeNotIterable

I Python uppstår felet TypeError: argument of type 'insert type' is not iterable när medlemskapsoperatorn (i, inte i) används för att verifiera medlemskapet för ett värde i objekt som inte går att iterera, till exempel lista, tuppeln, ordlistan. Detta beror vanligtvis på sökningen av värdet i ett icke-iterbart objekt. Möjliga lösningar:

  • Kontrollera om värdet finns i det iterbara objektet.
  • Om du vill kontrollera ett värde till ett annat använder du logisk operator i stället för Medlemskapsoperator.
  • Om medlemskapsoperatorn innehåller värdet "Ingen" kan den inte iterera och en null-kontroll eller tilldelad standard måste göras.
  • Kontrollera om typen av värde som används faktiskt kan kontrolleras och att inmatningen är korrekt.

Spark_System_ABFS_OperationFailed

En åtgärd med ADLS Gen2 misslyckades.

Det här felet uppstår vanligtvis på grund av ett behörighetsproblem.

Se till att RBAC-rollen för alla ADLS Gen2-resurser som refereras i Spark-jobbet har RBAC-rollen "Storage Blob Data Contributor" för de lagringskonton som jobbet förväntas läsa och skriva från. Kontrollera loggarna för det här Spark-programmet. Gå till Synapse Studio och välj fliken Övervaka i den vänstra rutan. I avsnittet Aktiviteter väljer du Apache Spark-program och letar reda på ditt Spark-jobb i listan. För namnet på det ADLS Gen2-lagringskonto som har det här problemet kontrollerar du loggarna som är tillgängliga på fliken Loggar längst ned på den här sidan.

Spark_Ambiguous_ClassLoader_NoClassDefFound

Det gick inte att hitta en klass som krävs av koden när skriptet kördes.

Se följande sidor för dokumentation om pakethantering:

För notebook-scenarier: Apache Spark hanterar paket för interaktiva jobb

För Spark-batchscenarier (se avsnitt 6): Apache Spark hanterar paket för batchjobb

Se till att alla kodberoenden ingår i JARs Synapse-körningarna. Om du inte har eller inte kan inkludera tredjeparts-JAR:er med din egen kod kontrollerar du att alla beroenden ingår i arbetsytepaketen för Spark-poolen som du kör kod på, eller så ingår de i listan "Referensfiler" för Spark-batchöverföringen. Mer information finns i dokumentationen ovan.

Spark_Unknown_Unknown_java.lang.Exception

Ett okänt fel, modellen kunde inte klassificera.

Felkoderna (inklusive och utanför listan som visas ovan) tillsammans med felsökningsanvisningarna om hur du löser problemet visas i fönstret Synapse Studio programfel om den här funktionen är aktiverad.

Anteckning

Om du har skapat verktyg runt Synapse-övervakningsjobbet som söker efter ett misslyckat jobb genom att LIVY_JOB_STATE_DEAD filtrera felkoden, fungerar inte appen längre. Eftersom de returnerade felkoderna skulle vara annorlunda som nämnts ovan. Ändra eventuella skript i enlighet med detta för att använda den här funktionen eller inaktivera funktionen om den inte behövs.