Кориснички дефинисана функција на CPU-у може да прекине Apache Spark упит који је иначе убрзан GPU-ом. cuDF додатак генерално не може да преведе произвољан UDF код: претвара колоне података у редове, извршава функцију на CPU-у, па поново претвара резултат. NVIDIA водич од 13. октобра описује агентске вештине за преписивање UDF-а у Spark SQL, колонасти RapidsUDF или RapidsUDF који користи CUDA-у. Корисно питање за инжењера података јесте да ли једно преписивање даје исте одговоре, остаје на GPU-у у релевантном плану и побољшава стварни посао.
Ово је водич заснован на документацији. BIG CHANGE није покренуо вештине, тестирао UDF нити мерио Spark оптерећење.
Велика промена
- Шта се променило: NVIDIA је објавила фазни ток рада агента за генерисање UDF тестова, конверзију функције, процену конверзије, бенчмарковање CPU и GPU верзија и опциону оптимизацију cuDF имплементације.
- Коме помаже: Инжењерима који имају RAPIDS/cuDF Spark цевовод способан за GPU и конкретан CPU UDF који га прекида.
- Шта проверити: Поклапање излаза у репрезентативним граничним случајевима, план извршавања без циљаног преласка на CPU и поновљиве перформансе посла на предвиђеном хардверу.
Пре него што почнете
Изаберите један UDF који имате дозволу да поделите са програмерским агентом. Не уносите акредитиве, осетљиве редове улаза ни власничке скупове података у упит осим ако су агент и његово окружење одобрени за то. Наведите изворни код UDF-а, место регистрације и позива, релевантне шеме, очекивано понашање за null вредности и грешке и мали дозвољени тестни пример. Забележите план и време постојећег Spark посла као основу за поређење.
Овај README вештина је верзионисана полазна тачка тока рада. За изградњу UDF-ова тражи Maven и JDK, као и компатибилан Spark/RAPIDS/cuDF/CUDA пакет и GPU. Пре инсталирања проверите актуелни водич за компатибилност додатка са својом Spark дистрибуцијом, Scala верзијом, управљачким програмом, CUDA верзијом и GPU-ом. GPU у облаку је алтернатива локалном хардверу, али добављач наплаћује време инстанце и складиште. Коришћење агента/модела такође може да кошта. README даје костур пројекта и примере, али не доказује компатибилност нити перформансе вашег кластера.
Препишите и проверите једну функцију
- Најпре утврдите изворно понашање. Затражите од агента да на изабраном UDF-у користи
udf-gen-testи сами прегледајте генерисане тестове. Додајте стварне случајеве из уговора: null вредности, празне ниске или колекције, неисправне улазе, граничне вредности, нумеричку прецизност, редослед и понашање при грешкама, где је применљиво. Покрените изворни UDF над њима. Очекивани резултат је пролазни основни скуп тестова, а не преписивање. NVIDIA пример температурне функције изричито враћа null за null улаз; SQL преписивање има смисла само ако се то понашање очува и са вашим типовима података и Spark подешавањима. - Изаберите најједноставнији подржани циљ. Ако се логика може изразити Spark SQL-ом или DataFrame изразима, затражите
udf-convert-to-sql. То излаже израз Spark планеру и може да омогући додатку да подржане операције замени еквивалентима на GPU-у. Ако SQL не може јасно да изрази потребну логику, затражитеudf-convert-to-cudf: његовRapidsUDF.evaluateColumnarприма GPU векторе колона и саставља cuDF операције.udf-convert-to-cudaсачувајте за логику којој је потребно прилагођено језгро преко JNI-ја и чије је додатно оптерећење имплементације и одржавања оправдано. То су опције за процену, а не обећање да ће свака операција радити на GPU-у. - Прегледајте конверзију пре прихватања. Упоредите преписану имплементацију са изворном и покрените обе над истим одобреним тест случајевима. Репозиторијум наводи и
udf-judge-conversionза засебан преглед недостатака у тестовима и грешака конверзије. Проверите типове, пренос null вредности, заокруживање, изузетке, редослед и руковање ресурсима. Код cuDF преписивања проверите животни век привремених колона и скалара; Scala пример из упутства користи ресурсе ограниченог опсега и враћа колону резултата. Пролазак генерисаног скупа тестова користан је доказ, али човек и даље мора да процени да ли покрива уговор функције. - Прегледајте извршени план. Покрените измењени упит са укљученим cuDF додатком и прегледајте план и RAPIDS дијагностику за циљни оператор и оближње конверзије. NVIDIA-јев преглед додатка наводи да неподржане SQL операције прелазе на Spark CPU извршавање. Ако план и даље приказује UDF или околне операторе на CPU-у, утврдите који израз или тип није подржан и преиспитајте избор циља. Сачувајте планове пре и после са резултатом теста. Класа названа
RapidsUDFсама не доказује да цео посао остаје на GPU-у. - Бенчмаркујте посао који намеравате да покренете. Користите
udf-benchmarkза поређење изворне и измењене имплементације са истим улазима, величином кластера, конфигурацијом и методом мерења. Забележите трајање посла, величину улаза, еквивалентност излаза и коришћење GPU/CPU ресурса. Поновите покретања да бисте уочили ефекте покретања, кеша или надметања. Очекује се поновљиво поређење, чак и ако преписивање буде спорије. Ако је исправна cuDF верзија спора, репозиторијум нудиudf-optimize-cudfза профилисање и ревизију; после сваке измене поново проверите исправност и план.
Како изгледа успешан резултат
Кандидат је спреман за уобичајен преглед кода када се излази изабраног UDF-а поклапају са документованим понашањем у одобреним случајевима, извршени план више не садржи циљани прелазак на CPU и репрезентативни бенчмарк показује вредан резултат од почетка до краја. Ако нека провера не успе, задржите изворну имплементацију, ограничите преписивање на проблематичан израз и поновите ту фазу. Семантичко неслагање важније је од бржег бенчмарка; непромењен план значи да намеравани GPU пут није доказан.
NVIDIA наводи производни пример у којем је UDF са cuDF-ом скратио време оператора са 274,55 на 12,78 сати на оптерећењу од 600 милијарди редова. То су времена оператора која је добављач пријавио за то оптерећење, а не прогноза за други UDF нити резултат целог посла. Ширу тврдњу о 22 пута већој брзини треба читати у том контексту. Капацитет GPU-а, пренос података, неподржане операције, преглед кода и трошкови облака могу променити исход вашег цевовода.
Извори и додатна литература
- NVIDIA Technical Blog, 13. октобар 2026.: објашњава прелазак на CPU, избор SQL/cuDF/CUDA, четири фазе тока рада и једини наведени пример перформанси компаније. Бројке о перформансама пријавио је добављач.
- NVIDIA cuDF Spark вештине, фиксна ревизија репозиторијума: верзионисана полазна тачка за костур пројекта и појединачне вештине. Фиксирана GitHub страница није била доступна путем нашег начина преузимања; детаљи тока рада упоређени су са NVIDIA упутством и доступним README-ом вештина на главној грани репозиторијума.
- Преглед cuDF додатка за Apache Spark: актуелне информације о подешавању и компатибилности, уз изричито правило да се неподржане операције извршавају на Spark CPU-у. Пре имплементације проверите списак компатибилности за конкретно издање.



