Foutcodes interpreteren in Synapse Analytics

Er zijn veel factoren die kunnen spelen waarom een Spark-toepassing momenteel mislukt in Azure Synapse Analytics. Dit kan bijvoorbeeld het gevolg zijn van een systeemfout of zelfs een gebruikersfout. Voorheen werden alle fouten met betrekking tot mislukte taken in Synapse Analytics weergegeven met een algemene foutcode die LIVY_JOB_STATE_DEAD weergeeft. Deze foutcode gaf geen verder inzicht in de reden waarom de taak is mislukt. Het vereist aanzienlijke inspanning om de hoofdoorzaak te identificeren door te graven in het stuurprogramma, de uitvoerder, de Spark-gebeurtenis, Livy-logboeken en een oplossing te vinden.

Schermopname van Apache Spark-foutcode zonder gedetailleerd bericht.

We hebben een nauwkeurigere lijst met foutcodes geïntroduceerd die het vorige algemene bericht vervangt. In het nieuwe bericht wordt de oorzaak van de fout beschreven. Wanneer een taak mislukt in Azure Synapse Analytics, parseert en controleert de functie voor foutafhandeling de logboeken op de back-end om de hoofdoorzaak te identificeren. Vervolgens wordt een bericht voor de gebruiker weergegeven in het bewakingsvenster, samen met de stappen om het probleem op te lossen.

Schermopname van de Apache Spark-foutcode met een gedetailleerd bericht.

Foutclassificatie inschakelen in Synapse

De functie voor foutclassificatie kan worden in- of uitgeschakeld door de volgende Spark-configuratie in te true stellen op of false op taak- of poolniveau:

livy.rsc.synapse.error-classification.enabled

De volgende sectie bevat een aantal fouttypen die momenteel worden ondersteund. We zijn voortdurend bezig met het verfijnen en toevoegen van meer aan deze foutcodes door ons model te verbeteren.

Foutcodecategorieën

Elke foutcode valt onder een van de volgende vier buckets:

  1. Gebruiker - Een gebruikersfout aangeven
  2. Systeem - Geeft een systeemfout aan
  3. Dubbelzinnig : kan een gebruikers- of systeemfout zijn
  4. Onbekend - Nog geen classificatie, waarschijnlijk omdat het fouttype niet is opgenomen in het model

Voorbeelden van foutcodes voor elk classificatietype

Spark_User_TypeError_TypeNotIterable

In Python treedt de fout TypeError: argument of type 'insert type' is not iterable op wanneer de lidmaatschapsoperator (in, niet in) wordt gebruikt om het lidmaatschap van een waarde te valideren in niet-itereerbare objecten, zoals lijst, tuple, woordenlijst. Dit wordt meestal veroorzaakt door het zoeken naar waarde in een niet-itereerbaar object. Mogelijke oplossingen:

  • Controleer of de waarde aanwezig is in het object dat kan worden uitgevoerd.
  • Als u de ene waarde naar de andere wilt controleren, gebruikt u een logische operator in plaats van lidmaatschapsoperator.
  • Als de lidmaatschapsoperator de waarde 'Geen' bevat, kan deze niet worden herhaald en moet er een null-controle of een toegewezen standaardwaarde worden uitgevoerd.
  • Controleer of het type van de gebruikte waarde daadwerkelijk kan worden gecontroleerd en of het typen juist is.

Spark_System_ABFS_OperationFailed

Een bewerking met ADLS Gen2 is mislukt.

Deze fout treedt meestal op vanwege een machtigingsprobleem.

Zorg ervoor dat voor alle ADLS Gen2-resources waarnaar wordt verwezen in de Spark-taak, de RBAC-rol 'Bijdrager voor opslagblobgegevens' heeft voor de opslagaccounts waaruit de taak naar verwachting moet lezen en schrijven. Controleer de logboeken voor deze Spark-toepassing. Ga naar uw Synapse Studio en selecteer het tabblad Monitor in het linkerdeelvenster. Selecteer in de sectie Activiteitende optie Apache Spark-toepassingen en zoek uw Spark-taak in de lijst. Voor de naam van het ADLS Gen2-opslagaccount dat dit probleem ondervindt, controleert u de logboeken die beschikbaar zijn op het tabblad Logboeken onderaan deze pagina.

Spark_Ambiguous_ClassLoader_NoClassDefFound

Een klasse die door de code is vereist, is niet gevonden toen het script werd uitgevoerd.

Raadpleeg de volgende pagina's voor documentatie over pakketbeheer:

Voor notebookscenario's: Apache Spark-beheerpakketten voor interactieve taken

Voor Spark-batchscenario's (zie sectie 6): Apache Spark-beheerpakketten voor batchtaken

Zorg ervoor dat alle codeafhankelijkheden zijn opgenomen in de JARs Synapse-uitvoeringen. Als u geen JAR's van derden met uw eigen code kunt opnemen, moet u ervoor zorgen dat alle afhankelijkheden zijn opgenomen in de werkruimtepakketten voor de Spark-pool waarop u code uitvoert of dat ze zijn opgenomen in de vermelding 'Referentiebestanden' voor het indienen van de Spark-batch. Zie de bovenstaande documentatie voor meer informatie.

Spark_Unknown_Unknown_java.lang.Exception

Vanwege een onbekende fout kon het model niet worden geclassificeerd.

De foutcodes (inclusief en buiten de bovenstaande lijst) samen met de instructies voor probleemoplossing voor het oplossen van het probleem worden weergegeven in het foutvenster Synapse Studio toepassing als deze functie is ingeschakeld.

Notitie

Als u hulpprogramma's hebt gebouwd rond de Synapse-bewakingstaak die controleert op een mislukte taak door de LIVY_JOB_STATE_DEAD foutcode te filteren, werkt uw app niet meer. Omdat de geretourneerde foutcodes anders zouden zijn zoals hierboven vermeld. Wijzig eventuele scripts dienovereenkomstig om deze functie te gebruiken of schakel de functie uit als deze niet nodig is.