DUNIA TERUS BERGERAK.RSS
BIG CHANGE.

Edisi Markdown

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

# Cara memeriksa apakah penulisan ulang UDF Spark berjalan di GPU

> Urutan praktis untuk menguji satu UDF Spark, memilih SQL, cuDF, atau CUDA, memeriksa fallback ke CPU, dan mengukur hasil pada pipeline berkemampuan 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.

Fungsi yang ditentukan pengguna dan berjalan di CPU dapat mengganggu kueri Apache Spark yang selain itu dipercepat GPU. Plugin cuDF umumnya tidak dapat menerjemahkan kode UDF sembarang: plugin mengubah data kolumnar menjadi baris, menjalankan fungsi di CPU, lalu mengubah hasilnya kembali. [Panduan NVIDIA tanggal 13 Oktober](https://developer.nvidia.com/blog/rewrite-apache-spark-udfs-gpu-acceleration-ai-agents/) menguraikan kemampuan agen untuk menulis ulang UDF sebagai Spark SQL, opsi kolumnar `RapidsUDF`, atau `RapidsUDF` yang didukung CUDA. Pertanyaan penting bagi teknisi data adalah apakah satu penulisan ulang menghasilkan jawaban yang sama, tetap berjalan di GPU dalam rencana yang relevan, dan meningkatkan pekerjaan sebenarnya.

Ini adalah panduan berbasis dokumentasi. BIG CHANGE tidak menjalankan kemampuan tersebut, menguji UDF, atau mengukur beban kerja Spark.

## Perubahan besar

- **Apa yang berubah:** NVIDIA menerbitkan alur kerja agen bertahap untuk menghasilkan pengujian UDF, mengonversi fungsi, menilai hasil konversi, membandingkan versi CPU dan GPU, serta secara opsional mengoptimalkan implementasi cuDF.
- **Siapa yang terbantu:** Teknisi dengan pipeline Spark RAPIDS/cuDF berkemampuan GPU dan UDF CPU tertentu yang menghambatnya.
- **Yang perlu diverifikasi:** Keluaran yang cocok pada kasus tepi yang representatif, rencana eksekusi tanpa fallback CPU yang ditargetkan, serta kinerja tingkat pekerjaan yang dapat diulang pada perangkat keras yang dimaksud.

## Sebelum memulai

Pilih satu UDF yang memang boleh Anda bagikan dengan agen pemrograman. Jangan masukkan kredensial, baris masukan sensitif, atau dataset milik perusahaan ke prompt kecuali agen dan lingkungannya telah disetujui untuk mengaksesnya. Berikan kode sumber UDF, lokasi pendaftaran dan pemanggilannya, skema yang relevan, perilaku null dan kesalahan yang diharapkan, serta contoh uji kecil yang diizinkan. Catat rencana dan waktu pekerjaan Spark saat ini sebagai dasar perbandingan.

Dokumen [README kemampuan](https://github.com/NVIDIA/cudf-spark/tree/cb8150b7ee4b07863bb6b267f28885def24b177e/skills) adalah titik awal alur kerja yang berversi. Dokumen itu mensyaratkan Maven dan JDK untuk membangun UDF, ditambah tumpukan Spark/RAPIDS/cuDF/CUDA yang kompatibel serta GPU. Sebelum memasang apa pun, periksa [panduan kompatibilitas plugin terbaru](https://docs.nvidia.com/cudf-spark/latest/getting-started/overview.html) terhadap distribusi Spark, versi Scala, driver, build CUDA, dan GPU Anda. GPU cloud adalah alternatif perangkat lokal, dengan biaya waktu instans dan penyimpanan dari penyedia. Penggunaan agen/model juga dapat berbiaya. README menyediakan kerangka proyek dan contoh, tetapi tidak membuktikan kompatibilitas atau kinerja untuk klaster Anda.

## Tulis ulang dan periksa satu fungsi

1. **Pastikan dahulu perilaku asli.** Minta agen menggunakan `udf-gen-test` pada UDF yang dipilih, lalu periksa sendiri pengujian yang dihasilkan. Tambahkan kasus nyata dari kontraknya: null, string atau koleksi kosong, masukan cacat, nilai batas, presisi numerik, urutan, dan perilaku kesalahan jika relevan. Jalankan UDF asli terhadap semua kasus itu. Hasil yang diharapkan adalah rangkaian pengujian dasar yang lulus, belum penulisan ulang. Contoh fungsi suhu NVIDIA secara eksplisit mengembalikan null untuk masukan null; penulisan ulang SQL hanya berguna jika perilaku itu juga bertahan dengan tipe data dan konfigurasi Spark Anda.
2. **Pilih sasaran termudah yang didukung.** Untuk logika yang dapat dinyatakan dengan Spark SQL atau ekspresi DataFrame, minta `udf-convert-to-sql`. Ini membuat ekspresi terlihat oleh planner Spark dan dapat memungkinkan plugin mengganti operasi yang didukung dengan padanan GPU. Jika SQL tidak dapat menyatakan logika yang diperlukan dengan jelas, minta `udf-convert-to-cudf`: `RapidsUDF.evaluateColumnar` menerima vektor kolom GPU dan menyusun operasi cuDF. Cadangkan `udf-convert-to-cuda` untuk logika yang memerlukan kernel khusus melalui JNI dan beban implementasi serta pemeliharaan tambahannya memang layak. Ini adalah opsi untuk dievaluasi, bukan janji bahwa setiap operasi berjalan di GPU.
3. **Tinjau konversi sebelum menerimanya.** Bandingkan implementasi yang ditulis ulang dengan versi asli dan jalankan keduanya pada kasus uji yang sama-sama disetujui. Repositori juga mencantumkan `udf-judge-conversion` untuk tinjauan terpisah atas kekurangan pengujian dan bug konversi. Periksa tipe, perambatan null, pembulatan, pengecualian, urutan, dan pengelolaan sumber daya. Untuk penulisan ulang cuDF, periksa masa hidup kolom sementara dan skalar; [contoh Scala dalam tutorial](https://developer.nvidia.com/blog/rewrite-apache-spark-udfs-gpu-acceleration-ai-agents/) menggunakan sumber daya dengan cakupan terkelola dan mengembalikan kolom hasil. Rangkaian pengujian buatan yang lulus merupakan bukti berguna, tetapi manusia tetap harus menilai apakah pengujian itu mencakup kontrak fungsi.
4. **Periksa rencana eksekusi.** Jalankan kueri yang diubah dengan plugin cuDF aktif dan periksa rencana serta diagnostik RAPIDS untuk operator sasaran dan konversi di sekitarnya. [Ikhtisar plugin](https://docs.nvidia.com/cudf-spark/latest/getting-started/overview.html) NVIDIA menyebutkan bahwa operasi SQL yang tidak didukung akan fallback ke eksekusi CPU Spark. Jika rencana masih menunjukkan UDF atau operator di sekitarnya berjalan di CPU, cari ekspresi atau tipe yang tidak didukung dan tinjau kembali pilihan sasaran. Simpan rencana sebelum dan sesudah beserta hasil pengujian. Kelas bernama `RapidsUDF` saja tidak membuktikan seluruh pekerjaan tetap berjalan di GPU.
5. **Ukur pekerjaan yang memang akan dijalankan.** Gunakan `udf-benchmark` untuk membandingkan implementasi asli dan yang diubah dengan masukan, ukuran klaster, konfigurasi, dan metode pengukuran yang sama. Catat waktu pekerjaan, ukuran masukan, kesetaraan keluaran, dan penggunaan sumber daya GPU/CPU. Ulangi untuk mengamati efek startup, cache, atau perebutan sumber daya. Hasil yang diharapkan adalah perbandingan yang dapat direproduksi, sekalipun penulisan ulang justru lebih lambat. Jika versi cuDF yang benar lambat, repositori menawarkan `udf-optimize-cudf` untuk membuat profil dan merevisinya; ulangi pemeriksaan kebenaran dan rencana setelah setiap perubahan.

## Seperti apa hasil yang berhasil

Kandidat siap untuk tinjauan kode biasa jika keluaran UDF yang dipilih sesuai dengan perilaku terdokumentasi pada kasus yang disetujui, rencana eksekusi tidak lagi memuat fallback CPU sasaran, dan tolok ukur representatif menunjukkan hasil menyeluruh yang layak. Jika ada pemeriksaan gagal, pertahankan implementasi asli, persempit penulisan ulang ke ekspresi yang bermasalah, lalu ulangi tahap itu. Ketidakcocokan semantik lebih penting daripada tolok ukur yang lebih cepat; rencana yang tidak berubah berarti jalur GPU yang dimaksud belum terbukti.

NVIDIA melaporkan satu contoh produksi ketika UDF ber-cuDF mengurangi waktu operator dari **274,55 menjadi 12,78 jam** pada beban kerja 600 miliar baris. Angka itu adalah waktu operator yang dilaporkan vendor untuk beban kerja tersebut, bukan perkiraan bagi UDF lain atau hasil pekerjaan dari awal hingga akhir. Klaim 22 kali yang lebih luas perlu dibaca dalam konteks itu. Kapasitas GPU, perpindahan data, operasi yang tidak didukung, tinjauan kode, dan biaya cloud dapat mengubah hasil pada pipeline Anda.

## Sumber dan bacaan lanjutan

- [NVIDIA Technical Blog, 13 Oktober 2026](https://developer.nvidia.com/blog/rewrite-apache-spark-udfs-gpu-acceleration-ai-agents/): menjelaskan fallback CPU, pilihan SQL/cuDF/CUDA, empat tahap alur kerja, serta satu-satunya contoh kinerja yang dikutip perusahaan. Angka kinerjanya dilaporkan vendor.
- [Kemampuan cuDF Spark NVIDIA, revisi repositori yang dipatok](https://github.com/NVIDIA/cudf-spark/tree/cb8150b7ee4b07863bb6b267f28885def24b177e/skills): titik masuk berversi untuk kerangka proyek dan kemampuan individual. Halaman GitHub yang dipatok tidak tersedia melalui jalur pengambilan kami; detail alur kerja dicocokkan dengan tutorial NVIDIA dan README kemampuan yang dapat diakses di cabang utama repositori.
- [Ikhtisar plugin cuDF untuk Apache Spark](https://docs.nvidia.com/cudf-spark/latest/getting-started/overview.html): informasi pengaturan dan kompatibilitas terkini, serta aturan eksplisit bahwa operasi yang tidak didukung berjalan di CPU Spark. Periksa daftar kompatibilitas khusus rilis sebelum implementasi.

## 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/) — Tutorial utama dan contoh beban kerja yang dilaporkan vendor.
- [Kemampuan cuDF Spark NVIDIA, revisi yang dipatok](https://github.com/NVIDIA/cudf-spark/tree/cb8150b7ee4b07863bb6b267f28885def24b177e/skills) — Revisi yang ditugaskan telah dipatok; pengambilan gagal karena web cache miss. Detail dicocokkan dengan tutorial dan README utama yang dapat diakses.
- [Kemampuan cuDF Spark NVIDIA, README utama](https://github.com/NVIDIA/cudf-spark/tree/main/skills) — README yang dapat berubah dan memuat nama kemampuan serta prasyarat.
- [Ikhtisar plugin cuDF untuk Apache Spark](https://docs.nvidia.com/cudf-spark/latest/getting-started/overview.html) — Dokumentasi terkini tentang fallback dan kompatibilitas; periksa sesuai rilis deployment.