All Products
Search
Document Center

MaxCompute:Gunakan IntelliJ IDEA untuk mengembangkan Java UDF

Last Updated:Mar 18, 2026

Topik ini menjelaskan cara menggunakan MaxCompute Studio di IntelliJ IDEA untuk menulis, menguji, menerapkan, dan memanggil fungsi yang didefinisikan pengguna (user-defined function/UDF) berbasis Java. UDF memperluas kemampuan MaxCompute SQL dengan logika kustom yang dijalankan pada setiap baris data. Pada akhir tutorial ini, Anda akan memiliki UDF skalar bernama Lower_test yang menerima argumen STRING dan mengembalikan bentuk huruf kecilnya.

Apa yang akan Anda buat

UDF skalar (Lower_test) yang menerima argumen STRING dan mengembalikan bentuk huruf kecilnya. Alur kerja lengkap mencakup:

  1. Menulis kelas Java di IntelliJ IDEA
  2. Menjalankannya secara lokal untuk memverifikasi logika
  3. Menerapkan JAR ke proyek MaxCompute Anda
  4. Memanggil UDF dalam pernyataan SQL

Referensi pemetaan tipe

Saat merancang signature metode evaluate(), petakan tipe MaxCompute SQL ke tipe Java sebagai berikut:

Tipe MaxCompute SQL Tipe Java
STRING String
BIGINT Long
DOUBLE Double
BOOLEAN Boolean
DATETIME java.util.Date

Prasyarat

Selesaikan tugas-tugas berikut sebelum memulai:

  1. Install MaxCompute Studio — Pasang plugin MaxCompute Studio untuk IntelliJ IDEA. Install MaxCompute Studio

  2. Connect to a MaxCompute project — Buat koneksi ke proyek MaxCompute tempat Anda akan menerapkan UDF. Create a MaxCompute project connection

  3. Create a MaxCompute Java module — Siapkan struktur modul Java yang diperlukan untuk menulis dan mengompilasi UDF. Create a MaxCompute Java module

Prosedur

  1. Tulis UDF dalam Java.

    1. Di panel navigasi sisi kiri, klik tab Project. Buka src > main > java, klik kanan java, lalu pilih New > MaxCompute Java.

      新建Java Class

    2. Di kotak dialog Create new MaxCompute java class, klik UDF. Di bidang Name, masukkan nama kelas lalu tekan Enter.

      选择类型填写名称

      Name menentukan nama kelas Java MaxCompute yang ingin Anda buat. Jika Anda belum membuat package, Anda dapat memasukkan packagename.classname untuk menghasilkan package secara otomatis.

      Catatan: Jika Anda belum membuat package, masukkan nama dalam format packagename.classname. Sistem akan menghasilkan package secara otomatis.

    3. Di file Java yang dihasilkan, implementasikan logika UDF. Contoh berikut menunjukkan UDF yang mengubah string menjadi huruf kecil.

      代码编辑区域

      package <packagename>;
      import com.aliyun.odps.udf.UDF;          // Kelas dasar yang wajib untuk semua MaxCompute UDF
      
      public final class Lower extends UDF {   // Harus memperluas UDF untuk fungsi skalar
      
          // evaluate() adalah titik masuk yang dipanggil untuk setiap baris.
          // Tipe parameter dan nilai kembali dipetakan ke tipe MaxCompute SQL (String -> STRING).
          public String evaluate(String s) {
              if (s == null) {                 // Selalu tangani input NULL untuk menghindari error waktu proses
                  return null;
              }
              return s.toLowerCase();
          }
      }

      Catatan: Ganti <packagename> dengan nama package aktual Anda (misalnya, com.example).

  2. Debug UDF secara lokal.

    Jalankan UDF secara lokal terhadap tabel MaxCompute untuk memverifikasi logika sebelum penerapan.

    1. Di direktori java, klik kanan file Java lalu pilih Run.

    2. Di kotak dialog Run/Debug Configurations, konfigurasikan bidang-bidang berikut.

      debug

      • MaxCompute project: Proyek MaxCompute tempat UDF dijalankan. Pilih local dari daftar drop-down untuk menjalankan secara lokal tanpa mengirim ke kluster.

      • MaxCompute table: Nama tabel MaxCompute yang menyediakan data masukan untuk eksekusi lokal.

      • Table columns: Kolom-kolom di tabel MaxCompute tempat UDF dioperasikan.

    3. Klik OK. UDF dijalankan secara lokal dan hasil kembaliannya muncul di panel output.

      Tips: Eksekusi lokal yang berhasil mengonfirmasi bahwa metode evaluate() Anda menangani tipe input dan nilai NULL dengan benar. Perbaiki semua error sebelum melanjutkan ke tahap penerapan.

  3. Terapkan UDF ke MaxCompute.

    Setelah pengujian lokal berhasil, kemas dan daftarkan UDF agar tersedia dalam SQL.

    1. Klik kanan file Java UDF lalu pilih Deploy to Server....

    2. Di kotak dialog Package a jar, submit resource and register function, konfigurasikan bidang-bidang berikut.

      • MaxCompute project: Proyek tujuan penerapan. Nilai default mencerminkan proyek yang Anda hubungkan saat menulis UDF. Pertahankan nilai default kecuali Anda menargetkan proyek berbeda.

      • Resource file: Jalur file resource JAR. Pertahankan nilai default.

      • Resource name: Nama resource sebagaimana didaftarkan di MaxCompute. Pertahankan nilai default.

      • Function name: Nama yang digunakan untuk memanggil UDF dalam pernyataan SQL. Masukkan Lower_test.

      Peringatan: Nilai di Function name adalah nama yang akan Anda gunakan dalam kueri SQL. Hindari nama yang bentrok dengan fungsi bawaan MaxCompute. Jika terjadi bentrok, UDF kustom Anda mungkin menimpa atau gagal menggantikan fungsi bawaan tersebut.

    3. Klik OK. MaxCompute Studio mengemas kode ke dalam JAR, mengunggahnya sebagai resource, dan mendaftarkan Lower_test sebagai fungsi di proyek yang dipilih.

  4. Panggil UDF dalam SQL.

    1. Di panel navigasi sisi kiri, buka tab Project Explorer.

    2. Klik kanan proyek MaxCompute Anda lalu pilih Open in Console.

    3. Di konsol, masukkan pernyataan SQL berikut lalu tekan Enter.

      select Lower_test('ALIYUN');

      调用UDF

    4. Verifikasi output. Hasil berikut dikembalikan, menunjukkan bahwa UDF Java Lower_test berfungsi dengan benar.

      Expected output:
      +------------+
      | _c0        |
      +------------+
      | aliyun     |
      +------------+

Pemecahan masalah

Gejala Kemungkinan penyebab Resolusi
ClassNotFoundException setelah penerapan JAR tidak diunggah ke proyek yang benar Verifikasi bahwa bidang MaxCompute project di kotak dialog penerapan mengarah ke proyek yang dimaksud, lalu terapkan ulang.
Permission denied saat mendaftarkan fungsi Hak istimewa tidak mencukupi Pastikan akun Anda memiliki hak istimewa CreateFunction pada proyek MaxCompute target.
NullPointerException saat kueri dijalankan Tidak ada penanganan NULL di evaluate() Tambahkan pemeriksaan if (s == null) { return null; } sebelum mengoperasikan parameter input.
Nama fungsi tidak dikenali dalam SQL Fungsi didaftarkan dengan nama berbeda Periksa nama yang terdaftar di daftar fungsi proyek MaxCompute dan sesuaikan pemanggilan SQL dengan nama yang terdaftar.

Langkah selanjutnya

Setelah berhasil menerapkan dan menguji Java UDF Anda, Anda dapat:

  • Develop other UDF types — Jelajahi UDAF (user-defined aggregate functions) dan UDTF (user-defined table-valued functions) untuk kasus penggunaan yang lebih lanjut.

  • Optimize UDF performance — Tinjau praktik terbaik MaxCompute untuk performa UDF, seperti meminimalkan alokasi objek di dalam evaluate().

  • Share UDFs across projects — Daftarkan file resource yang sama di beberapa proyek MaxCompute untuk menggunakan kembali UDF Anda tanpa menerapkan ulang.