AI-translated from English; not yet reviewed by a fluent editor.
# So prüfen Sie, ob eine Spark-UDF-Neufassung auf der GPU ausgeführt wird
> Eine praktische Abfolge zum Testen einer Spark-UDF, zur Wahl zwischen SQL, cuDF und CUDA, zur Prüfung eines CPU-Fallbacks und zur Messung des Ergebnisses in einer GPU-fähigen Pipeline.
By BIG CHANGE Editorial
Published: 2026-10-14T02:55:41.136Z
Updated: 2026-10-14T02:55:41.136Z
Canonical: https://bigchange.ai/blog/spark-udf-gpu-rewrite-verification-guide

AI-generated conceptual illustration by BIG CHANGE. Generic server hardware; no NVIDIA product, Spark interface or measured result is depicted.
Eine benutzerdefinierte Funktion auf der CPU kann eine ansonsten GPU-beschleunigte Apache-Spark-Abfrage unterbrechen. Das cuDF-Plugin kann beliebigen UDF-Code im Allgemeinen nicht übersetzen: Es wandelt Spaltendaten in Zeilen um, führt die Funktion auf der CPU aus und wandelt das Ergebnis anschließend zurück. [NVIDIAs Leitfaden vom 13. Oktober](https://developer.nvidia.com/blog/rewrite-apache-spark-udfs-gpu-acceleration-ai-agents/) beschreibt Agenten-Skills, mit denen eine UDF als Spark SQL, als spaltenbasierte `RapidsUDF` oder als `RapidsUDF` mit CUDA-Unterstützung neu geschrieben werden kann. Für Datentechniker lautet die entscheidende Frage, ob eine Neufassung dieselben Antworten liefert, im relevanten Plan auf der GPU bleibt und den tatsächlichen Job verbessert.
Dies ist ein dokumentationsbasierter Leitfaden. BIG CHANGE hat die Skills nicht ausgeführt, keine UDF getestet und keine Spark-Workload gemessen.
## Die große Veränderung
- **Was sich geändert hat:** NVIDIA hat einen mehrstufigen Agenten-Workflow veröffentlicht, der UDF-Tests generiert, eine Funktion umwandelt, die Umwandlung bewertet, CPU- und GPU-Versionen benchmarket und optional eine cuDF-Implementierung optimiert.
- **Wem es hilft:** Technikern mit einer GPU-fähigen RAPIDS/cuDF-Spark-Pipeline und einer bestimmten CPU-UDF, die diese unterbricht.
- **Was zu prüfen ist:** Übereinstimmende Ausgaben bei repräsentativen Grenzfällen, ein Ausführungsplan ohne den gezielten CPU-Fallback und wiederholbare Leistung auf Job-Ebene mit der vorgesehenen Hardware.
## Vor dem Start
Wählen Sie eine UDF, die Sie dem Programmieragenten freigeben dürfen. Geben Sie keine Zugangsdaten, sensiblen Eingabezeilen oder proprietären Datensätze in den Prompt, sofern Agent und Umgebung dafür nicht zugelassen sind. Stellen Sie den UDF-Quellcode, seine Registrierung und Aufrufstelle, relevante Schemata, das erwartete Verhalten bei Nullwerten und Fehlern sowie eine kleine zulässige Testvorrichtung bereit. Notieren Sie Plan und Laufzeit des vorhandenen Spark-Jobs als Vergleichsbasis.
Der [Skills-README](https://github.com/NVIDIA/cudf-spark/tree/cb8150b7ee4b07863bb6b267f28885def24b177e/skills) ist der versionierte Einstieg in den Workflow. Zum Erstellen von UDFs verlangt es Maven und ein JDK sowie einen kompatiblen Spark/RAPIDS/cuDF/CUDA-Stack und eine GPU. Prüfen Sie vor der Installation den [aktuellen Kompatibilitätsleitfaden des Plugins](https://docs.nvidia.com/cudf-spark/latest/getting-started/overview.html) für Ihre Spark-Distribution, Scala-Version, Ihren Treiber, CUDA-Build und Ihre GPU. Eine Cloud-GPU ist eine Alternative zur lokalen Hardware; der Anbieter berechnet Instanzzeit und Speicher. Auch die Nutzung von Agent oder Modell kann Kosten verursachen. Das README bietet ein Projektgerüst und Beispiele, kann aber weder Kompatibilität noch Leistung auf Ihrem Cluster belegen.
## Eine Funktion neu schreiben und prüfen
1. **Legen Sie zunächst das ursprüngliche Verhalten fest.** Bitten Sie den Agenten, bei der ausgewählten UDF `udf-gen-test` zu verwenden, und prüfen Sie die generierten Tests selbst. Ergänzen Sie echte Fälle aus dem Vertrag: gegebenenfalls Nullwerte, leere Zeichenfolgen oder Sammlungen, fehlerhafte Eingaben, Grenzwerte, numerische Genauigkeit, Reihenfolge und Fehlerverhalten. Führen Sie die ursprüngliche UDF damit aus. Erwartet wird eine bestandene Basistestsuite, noch keine Neufassung. NVIDIAs Temperaturfunktionsbeispiel gibt bei einer Null-Eingabe ausdrücklich null zurück; die SQL-Neufassung ist nur sinnvoll, wenn dieses Verhalten auch mit Ihren Datentypen und Spark-Einstellungen erhalten bleibt.
2. **Wählen Sie das einfachste unterstützte Ziel.** Wenn sich die Logik mit Spark SQL oder DataFrame-Ausdrücken darstellen lässt, bitten Sie um `udf-convert-to-sql`. Dadurch wird der Ausdruck für den Spark-Planer sichtbar, der unterstützte Operationen möglicherweise durch GPU-Äquivalente ersetzen kann. Lässt sich die benötigte Logik mit SQL nicht sauber ausdrücken, bitten Sie um `udf-convert-to-cudf`: Dessen `RapidsUDF.evaluateColumnar` nimmt GPU-Spaltenvektoren entgegen und setzt cuDF-Operationen zusammen. Verwenden Sie `udf-convert-to-cuda` nur für Logik, die einen eigenen Kernel über JNI benötigt und deren zusätzlicher Implementierungs- und Wartungsaufwand gerechtfertigt ist. Das sind Optionen zur Bewertung, keine Zusage, dass jede Operation auf der GPU läuft.
3. **Prüfen Sie die Umwandlung, bevor Sie sie übernehmen.** Vergleichen Sie die umgeschriebene Implementierung mit dem Original und führen Sie beide mit denselben freigegebenen Testfällen aus. Das Repository führt außerdem `udf-judge-conversion` für eine separate Prüfung von Testlücken und Umwandlungsfehlern auf. Prüfen Sie Typen, Null-Weitergabe, Rundung, Ausnahmen, Reihenfolge und Ressourcenverwaltung. Bei einer cuDF-Neufassung sollten Sie die Lebensdauer temporärer Spalten und Skalare kontrollieren; das [Scala-Beispiel des Tutorials](https://developer.nvidia.com/blog/rewrite-apache-spark-udfs-gpu-acceleration-ai-agents/) verwendet Ressourcen mit begrenztem Gültigkeitsbereich und gibt die Ergebnisspalte zurück. Eine bestandene generierte Testsuite ist ein nützlicher Beleg, aber ein Mensch muss weiterhin entscheiden, ob sie den Funktionsvertrag abdeckt.
4. **Prüfen Sie den ausgeführten Plan.** Führen Sie die geänderte Abfrage mit aktiviertem cuDF-Plugin aus und prüfen Sie Plan und RAPIDS-Diagnosen für den Zieloperator und angrenzende Umwandlungen. NVIDIAs [Plugin-Übersicht](https://docs.nvidia.com/cudf-spark/latest/getting-started/overview.html) sagt, dass nicht unterstützte SQL-Operationen auf die Spark-CPU-Ausführung zurückfallen. Zeigt der Plan die UDF oder umgebende Operatoren weiterhin auf der CPU, ermitteln Sie den nicht unterstützten Ausdruck oder Typ und überdenken Sie die Zielwahl. Bewahren Sie die Pläne vor und nach der Änderung mit dem Testergebnis auf. Eine Klasse mit dem Namen `RapidsUDF` allein beweist nicht, dass der gesamte Job auf der GPU bleibt.
5. **Benchmarken Sie den Job, den Sie ausführen wollen.** Verwenden Sie `udf-benchmark` , um Original und geänderte Implementierung mit denselben Eingaben, derselben Clustergröße, Konfiguration und Messmethode zu vergleichen. Notieren Sie Laufzeit, Eingabegröße, Ausgabegleichheit und GPU-/CPU-Ressourcenverbrauch. Wiederholen Sie die Läufe, um Start-, Cache- oder Konkurrenzwirkungen zu erkennen. Erwartet wird ein reproduzierbarer Vergleich, selbst wenn die Neufassung schlechter abschneidet. Ist eine korrekte cuDF-Version langsam, bietet das Repository `udf-optimize-cudf` zum Profilieren und Überarbeiten an; wiederholen Sie nach jeder Änderung die Korrektheits- und Planprüfungen.
## So sieht ein erfolgreiches Ergebnis aus
Der Kandidat ist für eine normale Codeprüfung bereit, wenn die Ausgaben der gewählten UDF in den freigegebenen Fällen dem dokumentierten Verhalten entsprechen, der ausgeführte Plan den gezielten CPU-Fallback nicht mehr enthält und ein repräsentativer Benchmark ein lohnendes Gesamtergebnis zeigt. Schlägt eine Prüfung fehl, behalten Sie die ursprüngliche Implementierung bei, beschränken Sie die Neufassung auf den fehlerhaften Ausdruck und wiederholen Sie diese Stufe. Eine semantische Abweichung wiegt schwerer als ein schnellerer Benchmark; ein unveränderter Plan belegt den vorgesehenen GPU-Pfad nicht.
NVIDIA berichtet von einem Produktionseinsatz, bei dem eine cuDF-aktivierte UDF die Operatorzeit bei einer Workload mit 600 Milliarden Zeilen von **274,55 auf 12,78 Stunden** senkte. Das sind vom Anbieter gemeldete Operatorzeiten für diese Workload, keine Prognose für eine andere UDF und kein Ergebnis eines durchgängigen Jobs. Die weitergehende 22-fache Angabe ist in diesem Zusammenhang zu lesen. GPU-Kapazität, Datenbewegung, nicht unterstützte Operationen, Codeprüfung und Cloudkosten können das Ergebnis Ihrer Pipeline verändern.
## Quellen und weiterführende Lektüre
- [NVIDIA Technical Blog, 13. Oktober 2026](https://developer.nvidia.com/blog/rewrite-apache-spark-udfs-gpu-acceleration-ai-agents/): Erläutert CPU-Fallback, die Wahl zwischen SQL/cuDF/CUDA, die vier Workflow-Stufen und das einzige von der Firma angeführte Leistungsbeispiel. Die Leistungszahlen stammen vom Anbieter.
- [NVIDIA-cuDF-Spark-Skills, festgelegte Repository-Revision](https://github.com/NVIDIA/cudf-spark/tree/cb8150b7ee4b07863bb6b267f28885def24b177e/skills): Versionierter Einstieg für das Gerüst und die einzelnen Skills. Die festgelegte GitHub-Seite war über unseren Abrufweg nicht verfügbar; die Workflow-Details wurden mit NVIDIAs Tutorial und dem zugänglichen Skills-README im Hauptzweig des Repositories abgeglichen.
- [Übersicht des cuDF-Plugins für Apache Spark](https://docs.nvidia.com/cudf-spark/latest/getting-started/overview.html): Aktuelle Einrichtungs- und Kompatibilitätsinformationen sowie die ausdrückliche Regel, dass nicht unterstützte Operationen auf der Spark-CPU ausgeführt werden. Prüfen Sie vor der Umsetzung die Kompatibilitätsliste der jeweiligen Version.
## Sources
- [NVIDIA Technical Blog, How to Rewrite Apache Spark UDFs for GPU Acceleration with AI Agents](https://developer.nvidia.com/blog/rewrite-apache-spark-udfs-gpu-acceleration-ai-agents/) — Haupttutorial und vom Anbieter gemeldetes Workload-Beispiel.
- [NVIDIA-cuDF-Spark-Skills, festgelegte Revision](https://github.com/NVIDIA/cudf-spark/tree/cb8150b7ee4b07863bb6b267f28885def24b177e/skills) — Zugewiesene feste Revision; der Abruf scheiterte wegen eines Web-Cache-Fehlers. Die Details wurden mit dem Tutorial und dem zugänglichen Haupt-README abgeglichen.
- [NVIDIA-cuDF-Spark-Skills, Haupt-README](https://github.com/NVIDIA/cudf-spark/tree/main/skills) — Aktuelles, veränderliches README mit Skill-Namen und Voraussetzungen.
- [Übersicht des cuDF-Plugins für Apache Spark](https://docs.nvidia.com/cudf-spark/latest/getting-started/overview.html) — Aktuelle Dokumentation zu Fallback und Kompatibilität; prüfen Sie sie anhand der eingesetzten Version.
Der Newsletter von BIG CHANGE
Das große Ganze. In Ihrem Tempo.
Aktuelle Storys über KI und Robotik, beobachtenswerte Veränderungen und praktische Ideen zur Anwendung. Wählen Sie ein tägliches Briefing, eine wöchentliche Zusammenfassung oder eine monatliche Perspektive.
Next scheduled send (UTC): . Your first edition arrives at the next scheduled send after you confirm.
Ihr Datenschutz, Ihre Entscheidung.
Notwendiger Speicher schützt die Website und merkt sich Ihre Einstellungen. Optionales Google Analytics bleibt deaktiviert, bis Sie es erlauben. Sie können alle Geschichten auch nur mit notwendigem Speicher lesen. Datenschutzdetails