All Products
Search
Document Center

MaxCompute:Ikhtisar UDF MaxCompute

Last Updated:Mar 27, 2026

MaxCompute menyediakan fungsi bawaan untuk tugas pemrosesan data umum. Jika fungsi bawaan tidak dapat merepresentasikan logika Anda, perluas MaxCompute dengan user-defined function (UDF).

Fungsi bawaan memiliki performa lebih baik dibandingkan UDF. Gunakan fungsi bawaan sebisa mungkin dan buat UDF hanya jika fungsi bawaan tidak mencakup logika yang Anda butuhkan.

Kapan menggunakan UDF

Gunakan UDF ketika logika transformasi Anda tidak dapat diekspresikan dengan fungsi bawaan. Skenario umum meliputi:

  • Penguraian string kustom atau transformasi spesifik bisnis

  • Analisis data spasial

  • Pipa pemrosesan data lintas proyek

Untuk agregasi standar, operasi string, dan aritmetika, gunakan fungsi bawaan sebagai gantinya karena tidak memerlukan penerapan dan berkinerja jauh lebih baik dalam skala besar.

Jika UDF dan fungsi bawaan memiliki nama yang sama, MaxCompute akan memanggil UDF tersebut. Untuk memanggil fungsi bawaan, tambahkan awalan ::. Contohnya: select ::concat('ab', 'c');

Jenis UDF

Dalam arti luas, UDF mencakup user-defined scalar function (UDF), user-defined aggregate function (UDAF), dan user-defined table-valued function (UDTF). Dalam arti sempit, UDF hanya merujuk pada user-defined scalar function.

MaxCompute mendukung tiga jenis inti UDF.

Type Pemetaan input ke output Perilaku
UDF (user-defined scalar function) Satu ke satu Setiap baris input menghasilkan satu nilai output
UDTF (user-defined table-valued function) Satu ke banyak Setiap baris input menghasilkan beberapa nilai dalam bentuk tabel
UDAF (user-defined aggregate function) Banyak ke satu Beberapa baris input diagregasi menjadi satu nilai output

MaxCompute juga menyediakan jenis UDF khusus untuk skenario tertentu.

Type Kasus penggunaan
Code-embedded UDFs Menyematkan kode Java atau Python langsung dalam skrip SQL untuk menyederhanakan pengembangan dan meningkatkan keterbacaan
SQL UDFs Mengenkapsulasi logika SQL yang dapat digunakan ulang untuk mengurangi duplikasi kode
Geospatial UDFs Menerapkan fungsi geospasial Hive untuk menganalisis data spasial di MaxCompute

Batasan dan pertimbangan

Batasan keras

Akses Internet — UDF tidak dapat mengakses Internet secara default. Untuk mengaktifkan akses Internet, ajukan permohonan koneksi jaringan. Setelah disetujui, tim dukungan teknis MaxCompute akan menghubungi Anda untuk menyiapkan koneksi tersebut. Untuk detailnya, lihat Network Connection Request FormNetwork connection process.

Akses VPC — UDF tidak dapat mengakses resource di virtual private cloud (VPC) secara default. Untuk mengaktifkan akses VPC, buat koneksi jaringan antara MaxCompute dan VPC tersebut. Untuk detailnya, lihat Use UDFs to access resources in VPCs.

Jenis tabel yang tidak didukung — UDF, UDAF, dan UDTF tidak dapat membaca data dari jenis tabel berikut:

  • Tabel yang telah menjalani schema evolution

  • Tabel yang berisi tipe data kompleks

  • Tabel yang berisi tipe data JSON

  • Tabel transaksional

Pertimbangan

Penggunaan memori — Saat UDF memproses dataset besar dengan kesenjangan data, pekerjaan komputasi mungkin melebihi alokasi memori JVM default. Untuk menaikkan batas memori, jalankan perintah berikut pada tingkat sesi:

set odps.sql.udf.joiner.jvm.memory=xxxx;

Untuk informasi lebih lanjut, lihat FAQ about MaxCompute UDFs.

Kembangkan UDF

Proses pengembangan untuk code-embedded UDFs, SQL UDFs, dan Geospatial UDFs berbeda dari alur kerja standar UDF, UDTF, dan UDAF. Lihat dokumentasi terkait untuk jenis-jenis tersebut.

Java

Gambar berikut menunjukkan alur kerja pengembangan UDF Java.

Java UDF development workflow
Langkah Wajib Aksi Platform Catatan
1 Opsional Tambahkan dependensi odps-sdk-udf ke file POM Anda IntelliJ IDEA (Maven) Cari odps-sdk-udf di repositori Maven untuk mendapatkan versi terbaru. Contoh: 0.29.10-public
2 Wajib Tulis kode UDF IntelliJ IDEA (Maven), MaxCompute Studio Ikuti Spesifikasi dan proses umum pengembangan UDF (Java)
3 Wajib Debug di mesin lokal Anda atau jalankan pengujian unit Verifikasi bahwa output sesuai ekspektasi
4 Wajib Paket kode menjadi file JAR
5 Wajib Unggah JAR tersebut sebagai resource ke proyek MaxCompute Anda Konsol DataWorks, Klien MaxCompute, MaxCompute Studio Tersedia tiga metode: Konsol DataWorks (visual), Klien MaxCompute (SQL), atau MaxCompute Studio (kode). Lihat panduan spesifik platform yang ditautkan.
6 Wajib Buat UDF dari JAR yang diunggah
7 Opsional Panggil UDF dalam kueri

Python

Gambar berikut menunjukkan alur kerja pengembangan UDF Python.

Python UDF development workflow
Langkah Wajib Aksi Platform Catatan
1 Wajib Tulis kode UDF MaxCompute Studio Ikuti Spesifikasi dan proses umum pengembangan UDF (Python 3) atau Python 2
2 Wajib Debug di mesin lokal Anda atau jalankan pengujian unit Verifikasi bahwa output sesuai ekspektasi
3 Wajib Unggah file Python dan resource yang diperlukan (file resource, table resource, paket pihak ketiga) ke proyek MaxCompute Anda Konsol DataWorks, Klien MaxCompute, MaxCompute Studio Tersedia tiga metode: Konsol DataWorks (visual), Klien MaxCompute (SQL), atau MaxCompute Studio (kode). Lihat panduan spesifik platform yang ditautkan.
4 Wajib Buat UDF dari file yang diunggah
5 Opsional Panggil UDF dalam kueri

Referensi SDK

SDK berikut mendukung pengembangan UDF Java. Untuk detail paket dan kelas, lihat MaxCompute SDK.

SDK Deskripsi
odps-sdk-core Mengelola resource dasar MaxCompute
odps-sdk-commons Utilitas umum untuk Java
odps-sdk-udf API UDF
odps-sdk-mapred API MapReduce
odps-sdk-graph API graf

Panggil UDF

Setelah mendaftarkan UDF, panggil seperti halnya fungsi bawaan.

Dalam satu proyek — Panggil UDF secara langsung, seperti fungsi bawaan lainnya.

Lintas proyek — Untuk menggunakan UDF dari proyek B di proyek A, rujuk dengan awalan nama proyek:

select B:udf_in_other_project(arg0, arg1) as res from table_t;

Untuk penyiapan berbagi lintas proyek, lihat Cross-project resource access based on packages.

Langkah selanjutnya

Jelajahi contoh end-to-end untuk melihat praktik pengembangan UDF: