Debuggen von benutzerdefiniertem C#-Code für fehlgeschlagene U-SQL-Aufträge
Wichtig
Azure Data Lake Analytics wurde am 29. Februar 2024 eingestellt. Erfahren Sie mehr mit dieser Ankündigung.
Bei Datenanalysen kann Ihre Organisation Azure Synapse Analytics oder Microsoft Fabricverwenden.
U-SQL stellt ein Erweiterbarkeitsmodell mit C# bereit. In U-SQL-Skripts ist es einfach, C#-Funktionen aufzurufen und Analysefunktionen auszuführen, die sql-ähnliche deklarative Sprache nicht unterstützt. Weitere Informationen zur U-SQL-Erweiterbarkeit finden Sie im U-SQL-Programmierhandbuch.
In der Praxis kann jeder Code Debugging benötigen, aber es ist schwierig, einen verteilten Auftrag mit benutzerdefiniertem Code in der Cloud mit eingeschränkten Protokolldateien zu debuggen. Azure Data Lake Tools für Visual Studio bietet ein Feature namens Failed Vertex Debug, mit dem Sie die Fehler, die in Ihrem benutzerdefinierten Code auftreten, einfacher debuggen können. Wenn der U-SQL-Auftrag fehlschlägt, behält der Dienst den Fehlerstatus bei, und das Tool hilft Ihnen, die Cloudfehlerumgebung zum Debuggen auf den lokalen Computer herunterzuladen. Der lokale Download erfasst die gesamte Cloudumgebung, einschließlich eingabedaten und Benutzercode.
Das folgende Video zeigt das fehlgeschlagene Vertex-Debugging in den Azure Data Lake Tools für Visual Studio.
Wichtig
Visual Studio erfordert die folgenden beiden Updates für die Verwendung dieses Features: Microsoft Visual C++ 2015 Redistributable Update 3 und die universelle C-Runtime für Windows.
Fehler beim Herunterladen des Vertex auf den lokalen Computer
Wenn Sie einen fehlgeschlagenen Auftrag in Azure Data Lake Tools für Visual Studio öffnen, wird auf der Registerkarte "Fehler" eine gelbe Warnungsleiste mit detaillierten Fehlermeldungen angezeigt.
Wählen Sie "Herunterladen" aus, um alle erforderlichen Ressourcen und Eingabedatenströme herunterzuladen. Wenn der Download nicht abgeschlossen ist, wählen Sie "Wiederholen" aus.
Wählen Sie "Öffnen" aus, nachdem der Download abgeschlossen ist, um eine lokale Debugumgebung zu generieren. Eine neue Debugging-Lösung wird geöffnet. Wenn Sie bereits eine Projektmappe in Visual Studio geöffnet haben, stellen Sie bitte sicher, dass Sie sie vor dem Debuggen speichern und schließen.
Konfigurieren der Debugumgebung
Hinweis
Vergewissern Sie sich vor dem Debuggen, dass Sie im Fenster "Ausnahmeeinstellungen" (STRG+ALT+E) die Ausnahmen für Common Language Runtime-Ausnahmen überprüfen.
In der neuen gestarteten Visual Studio-Instanz finden Sie möglicherweise oder nicht den benutzerdefinierten C#-Quellcode:
Quellcode ist in der Debuglösung enthalten
Es gibt zwei Fälle, in denen der C#-Quellcode erfasst wird:
Der Benutzercode wird in der CodeBehind-Datei definiert (in der Regel in einem U-SQL-Projekt genannt
Script.usql.cs
).Der Benutzercode wird im C#-Klassenbibliotheksprojekt für U-SQL-Anwendung definiert und als Assembly mit Debuginformationen registriert.
Wenn der Quellcode in die Lösung importiert wird, können Sie die Visual Studio-Debuggingtools (Überwachung, Variablen usw.) verwenden, um das Problem zu beheben:
Drücken Sie F5 , um mit dem Debuggen zu beginnen. Der Code wird ausgeführt, bis er von einer Ausnahme beendet wird.
Öffnen Sie die Quellcodedatei, und legen Sie Haltepunkte fest, und drücken Sie dann F5 , um den Code schritt für Schritt zu debuggen.
Quellcode ist nicht in der Debuglösung enthalten
Wenn der Benutzercode nicht in der CodeBehind-Datei enthalten ist oder Sie die Assembly nicht mit Debuginformationen registriert haben, wird der Quellcode nicht automatisch in die Debuglösung einbezogen. In diesem Fall benötigen Sie zusätzliche Schritte zum Hinzufügen des Quellcodes:
Klicken Sie mit der rechten Maustaste auf Projektmappe "VertexDebug" > Vorhandenes Projekt hinzufügen...>, um den Assemblyquellcode zu finden und das Projekt der Debugging-Lösung hinzuzufügen.
Rufen Sie den Projektordnerpfad für failedVertexDebugHost-Projekt ab.
Right-Click das hinzugefügte Assemblyquellcodeprojekt > "Eigenschaften", wählen Sie die Registerkarte "Build" links aus, und fügen Sie den kopierten Pfad ein, der mit \bin\debug als Ausgabepfad >endet. Der endgültige Ausgabepfad ist wie folgt:
<DataLakeTemp path>\fd91dd21-776e-4729-a78b-81ad85a4fba6\loiu0t1y.mfo\FailedVertexDebug\FailedVertexDebugHost\bin\Debug\
.
Beginnen Sie nach diesen Einstellungen mit dem Debuggen mit F5 und Haltepunkten. Sie können auch die Visual Studio-Debuggingtools (Überwachung, Variablen usw.) verwenden, um das Problem zu beheben.
Hinweis
Erstellen Sie das Assemblyquellcodeprojekt jedes Mal neu, nachdem Sie den Code geändert haben, um aktualisierte PDB-Dateien zu generieren.
Senden Sie den Auftrag erneut.
Nach dem Debuggen zeigt das Ausgabefenster die folgende Meldung an, wenn das Projekt erfolgreich abgeschlossen wurde:
The Program 'LocalVertexHost.exe' has exited with code 0 (0x0).
So übermitteln Sie den fehlgeschlagenen Auftrag erneut:
Kopieren Sie für Aufträge mit CodeBehind-Lösungen den C#-Code in die CodeBehind-Quelldatei (in der Regel
Script.usql.cs
).Klicken Sie für Aufträge mit Assemblys mit der rechten Maustaste auf das Quellcodeprojekt der Assembly in der Debuglösung, und registrieren Sie die aktualisierten .dll Assemblys in Ihrem Azure Data Lake-Katalog.
Übermitteln Sie den U-SQL-Auftrag erneut.