AI-translated from English; not yet reviewed by a fluent editor.

# Kako proveriti da li je Spark UDF prepravljen za izvršavanje na GPU-u

> Praktičan redosled za testiranje jedne Spark UDF funkcije, izbor SQL-a, cuDF-a ili CUDA-e, proveru prelaska na CPU i merenje rezultata u okruženju koje podržava GPU.

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

![Conceptual charcoal illustration of a generic rackmount server with a tray pulled partly forward, showing four finned modules inside.](https://bigchange.ai/api/media/file/spark-gpu-server-hero-v1.png)
AI-generated conceptual illustration by BIG CHANGE. Generic server hardware; no NVIDIA product, Spark interface or measured result is depicted.

Korisnički definisana funkcija na CPU-u može da prekine Apache Spark upit koji je inače ubrzan GPU-om. cuDF dodatak uglavnom ne može da prevede proizvoljan UDF kod: pretvara kolonske podatke u redove, izvršava funkciju na CPU-u, pa zatim ponovo pretvara rezultat u kolone. [NVIDIA vodič od 13. oktobra](https://developer.nvidia.com/blog/rewrite-apache-spark-udfs-gpu-acceleration-ai-agents/) opisuje agentske veštine za prepisivanje UDF-a u Spark SQL, kolonski `RapidsUDF`, ili `RapidsUDF` koji koristi CUDA-u. Korisno pitanje za inženjera podataka jeste da li jedna prepravka daje iste odgovore, ostaje na GPU-u u relevantnom planu i poboljšava stvarni posao.

Ovo je vodič zasnovan na dokumentaciji. BIG CHANGE nije pokrenuo te veštine, testirao UDF niti merio Spark opterećenje.

## Velika promena

- **Šta je novo:** NVIDIA je objavila fazni agentski tok rada za generisanje UDF testova, pretvaranje funkcije, procenu prepravke, poređenje CPU i GPU verzija i, po želji, optimizaciju cuDF implementacije.
- **Kome pomaže:** Inženjerima koji imaju GPU sposobnu RAPIDS/cuDF Spark obradu i konkretnu CPU UDF funkciju koja je prekida.
- **Šta proveriti:** Podudaranje izlaza na reprezentativnim graničnim slučajevima, izvršni plan bez ciljanog prelaska na CPU i ponovljive performanse celog posla na predviđenom hardveru.

## Pre nego što počnete

Izaberite jednu UDF funkciju koju imate pravo da podelite sa programerskim agentom. Ne stavljajte akreditive, osetljive ulazne redove ni vlasničke skupove podataka u prompt osim ako su agent i njegovo okruženje odobreni za njih. Dajte izvorni kod UDF-a, mesto registracije i poziva, relevantne šeme, očekivano ponašanje za null vrednosti i greške, kao i mali dozvoljeni testni uzorak. Zabeležite plan i trajanje postojećeg Spark posla da biste imali osnovu za poređenje.

Ovaj [README veština](https://github.com/NVIDIA/cudf-spark/tree/cb8150b7ee4b07863bb6b267f28885def24b177e/skills) predstavlja verzionisanu početnu tačku toka rada. Za izgradnju UDF-ova traži Maven i JDK, uz kompatibilan Spark/RAPIDS/cuDF/CUDA paket i GPU. Pre instalacije proverite [aktuelni vodič za kompatibilnost dodatka](https://docs.nvidia.com/cudf-spark/latest/getting-started/overview.html) prema svojoj Spark distribuciji, Scala verziji, upravljačkom programu, CUDA izdanju i GPU-u. GPU u oblaku je alternativa lokalnom hardveru, ali dobavljač naplaćuje vreme instance i skladište. Upotreba agenta/modela takođe može da košta. README daje kostur projekta i primere, ali ne može da potvrdi kompatibilnost ili performanse vašeg klastera.

## Prepravite i proverite jednu funkciju

1. **Najpre precizno utvrdite izvorno ponašanje.** Zatražite od agenta da na izabranoj UDF funkciji koristi `udf-gen-test` i sami pregledajte generisane testove. Dodajte stvarne slučajeve iz ugovora: null, prazne niske ili kolekcije, neispravne ulaze, granične vrednosti, numeričku preciznost, redosled i ponašanje pri grešci, gde je primenljivo. Pokrenite originalnu UDF funkciju nad njima. Očekuje se prolazni početni skup testova, a ne još prepravka. NVIDIA primer temperaturne funkcije izričito vraća null za null ulaz; SQL verzija je korisna samo ako se to ponašanje očuva i uz vaše tipove podataka i Spark podešavanja.
2. **Izaberite najjednostavniji podržani cilj.** Ako se logika može izraziti kroz Spark SQL ili DataFrame izraze, zatražite `udf-convert-to-sql`. Tako izraz postaje vidljiv Spark planeru i dodatak može da zameni podržane operacije GPU ekvivalentima. Ako SQL ne može jasno da izrazi potrebnu logiku, zatražite `udf-convert-to-cudf`: njegov `RapidsUDF.evaluateColumnar` prima GPU vektore kolona i sklapa cuDF operacije. `udf-convert-to-cuda` ostavite za logiku kojoj je potrebno prilagođeno jezgro preko JNI-ja i čiji su dodatni troškovi implementacije i održavanja opravdani. Ovo su opcije za procenu, a ne obećanje da se svaka operacija izvršava na GPU-u.
3. **Pregledajte prepravku pre prihvatanja.** Uporedite prepravljenu implementaciju sa originalom i pokrenite obe nad istim odobrenim testnim slučajevima. Repozitorijum navodi i `udf-judge-conversion` za odvojenu proveru nedostataka u testovima i grešaka u prepravci. Proverite tipove, prenos null vrednosti, zaokruživanje, izuzetke, redosled i upravljanje resursima. Kod cuDF prepravke proverite životni vek privremenih kolona i skalara; [Scala primer iz tutorijala](https://developer.nvidia.com/blog/rewrite-apache-spark-udfs-gpu-acceleration-ai-agents/) koristi resurse ograničene opsegom i vraća rezultujuću kolonu. Prolazni generisani testovi jesu koristan dokaz, ali čovek mora da odluči da li pokrivaju ugovor funkcije.
4. **Pregledajte izvršeni plan.** Pokrenite izmenjeni upit sa uključenim cuDF dodatkom i pregledajte plan i RAPIDS dijagnostiku za ciljani operator i obližnje konverzije. NVIDIA-in [pregled dodatka](https://docs.nvidia.com/cudf-spark/latest/getting-started/overview.html) navodi da se nepodržane SQL operacije vraćaju na Spark CPU izvršavanje. Ako plan i dalje prikazuje UDF ili okolne operatore na CPU-u, utvrdite koji izraz ili tip nije podržan i preispitajte izbor cilja. Sačuvajte planove pre i posle promene uz rezultat testa. Sama klasa nazvana `RapidsUDF` ne dokazuje da ceo posao ostaje na GPU-u.
5. **Izmerite posao koji nameravate da pokrenete.** Koristite `udf-benchmark` da uporedite originalnu i izmenjenu implementaciju pri istim ulazima, veličini klastera, podešavanjima i metodu merenja. Zabeležite trajanje posla, veličinu ulaza, ekvivalentnost izlaza i korišćenje GPU/CPU resursa. Ponovite pokretanja da biste uočili efekte pokretanja, keša ili nadmetanja za resurse. Rezultat treba da bude ponovljivo poređenje, čak i ako prepravka bude sporija. Ako je ispravna cuDF verzija spora, repozitorijum nudi `udf-optimize-cudf` za profilisanje i reviziju; posle svake izmene ponovo proverite ispravnost i plan.

## Kako izgleda uspešan rezultat

Kandidat je spreman za uobičajeni pregled koda kada se izlazi izabrane UDF funkcije poklapaju sa dokumentovanim ponašanjem u odobrenim slučajevima, izvršni plan više ne sadrži ciljani prelazak na CPU i reprezentativno merenje pokazuje vredan rezultat od početka do kraja. Ako neka provera ne prođe, zadržite originalnu implementaciju, suzite prepravku na problematičan izraz i ponovite tu fazu. Semantičko nepoklapanje važnije je od bržeg merenja; nepromenjen plan znači da željeni GPU put nije potvrđen.

NVIDIA navodi jedan produkcioni primer u kome je UDF sa uključenim cuDF-om skratio vreme operatora sa **274,55 na 12,78 sati** na opterećenju od 600 milijardi redova. To su vremena operatora koja je dobavljač prijavio za to opterećenje, a ne prognoza za drugu UDF funkciju ni rezultat posla od početka do kraja. Širu tvrdnju o 22 puta većoj brzini treba čitati u tom kontekstu. Kapacitet GPU-a, prenos podataka, nepodržane operacije, pregled koda i troškovi oblaka mogu promeniti ishod vašeg toka rada.

## Izvori i dodatno čitanje

- [NVIDIA Technical Blog, 13. oktobar 2026.](https://developer.nvidia.com/blog/rewrite-apache-spark-udfs-gpu-acceleration-ai-agents/): objašnjava prelazak na CPU, izbore SQL/cuDF/CUDA, četiri faze toka rada i jedini navedeni primer performansi kompanije. Brojke o performansama potiču od dobavljača.
- [NVIDIA cuDF Spark veštine, fiksirana revizija repozitorijuma](https://github.com/NVIDIA/cudf-spark/tree/cb8150b7ee4b07863bb6b267f28885def24b177e/skills): verzionisana početna tačka za kostur i pojedinačne veštine. Naš kanal za preuzimanje nije mogao da otvori fiksiranu GitHub stranicu; detalji toka rada provereni su prema NVIDIA tutorijalu i dostupnom README-u veština na glavnoj grani repozitorijuma.
- [Pregled cuDF dodatka za Apache Spark](https://docs.nvidia.com/cudf-spark/latest/getting-started/overview.html): aktuelne informacije o podešavanju i kompatibilnosti, uz izričito pravilo da se nepodržane operacije izvršavaju na Spark CPU-u. Pre primene proverite listu kompatibilnosti za konkretno izdanje.

## 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/) — Glavni tutorijal i primer opterećenja sa brojkama dobavljača.
- [NVIDIA cuDF Spark veštine, fiksirana revizija](https://github.com/NVIDIA/cudf-spark/tree/cb8150b7ee4b07863bb6b267f28885def24b177e/skills) — Dodeljena fiksirana revizija; preuzimanje nije uspelo zbog promašaja u veb kešu. Detalji su provereni prema tutorijalu i dostupnom glavnom README-u.
- [NVIDIA cuDF Spark veštine, glavni README](https://github.com/NVIDIA/cudf-spark/tree/main/skills) — Aktuelni README koji se menja i navodi nazive veština i preduslove.
- [Pregled cuDF dodatka za Apache Spark](https://docs.nvidia.com/cudf-spark/latest/getting-started/overview.html) — Aktuelna dokumentacija o CPU rezervnom putu i kompatibilnosti; proverite je prema izdanju u produkciji.
