全部产品
Search
文档中心

MaxCompute:Ikhtisar

更新时间:Jul 02, 2025

MaxCompute memungkinkan Anda menulis fungsi agregat yang didefinisikan pengguna (UDAF) dalam Java atau Python untuk memperluas kemampuan fungsi MaxCompute dan menyesuaikan dengan kebutuhan bisnis. Topik ini menjelaskan jenis, batasan, catatan penggunaan, proses pengembangan, serta cara menggunakan UDAF.

Informasi latar belakang

Pemetaan satu-ke-banyak dibuat antara data input dan output dari sebuah UDAF. Beberapa catatan input diagregasi untuk menghasilkan satu nilai output. MaxCompute mendukung penulisan UDAF dalam Java atau Python. Tabel berikut menggambarkan dua jenis UDAF.

Jenis UDAF

Deskripsi

Java UDAF

Jenis UDAF ini ditulis dalam Java untuk mengimplementasikan logika fungsinya. Untuk informasi lebih lanjut, lihat Java UDAF.

Python UDAF

Jenis UDAF ini ditulis dalam Python untuk mengimplementasikan logika fungsinya. Python UDAF diklasifikasikan menjadi Python 2 UDAF dan Python 3 UDAF.

  • Python 2 UDAF: Menggunakan Python 2.7. Untuk informasi lebih lanjut, lihat Python 2 UDAF.

  • Python 3 UDAF: Menggunakan CPython 3.7.3. Untuk informasi lebih lanjut, lihat Python 3 UDAF.

Batasan

  • Akses Internet menggunakan UDF

    Secara default, MaxCompute tidak mengizinkan akses Internet melalui UDF. Jika Anda perlu mengakses Internet menggunakan UDF, isi formulir aplikasi koneksi jaringan sesuai kebutuhan bisnis Anda dan ajukan aplikasi tersebut. Setelah disetujui, tim dukungan teknis MaxCompute akan menghubungi Anda untuk membantu membangun koneksi jaringan. Untuk informasi lebih lanjut tentang cara mengisi formulir aplikasi koneksi jaringan, lihat Proses Koneksi Jaringan.

  • Akses VPC menggunakan UDF

    Secara default, MaxCompute tidak mengizinkan akses sumber daya dalam VPC melalui UDF. Untuk menggunakan UDF mengakses sumber daya dalam VPC, Anda harus membangun koneksi jaringan antara MaxCompute dan VPC. Untuk informasi lebih lanjut tentang operasi terkait, lihat Gunakan UDF untuk Mengakses Sumber Daya dalam VPC.

  • Membaca data tabel menggunakan UDF, UDAF, atau UDTF

    Anda tidak dapat menggunakan UDF, UDAF, atau UDTF untuk membaca data dari jenis tabel berikut:

    • Tabel tempat evolusi skema dilakukan

    • Tabel yang berisi tipe data kompleks

    • Tabel yang berisi tipe data JSON

    • Tabel transaksional

Perhatian

Sebelum menggunakan UDF, perhatikan hal-hal berikut:

  • UDF tidak dapat bersaing dengan fungsi bawaan dalam hal performa. Kami menyarankan Anda memprioritaskan penggunaan fungsi bawaan untuk mengimplementasikan logika bisnis.

  • Saat menggunakan UDF dalam pernyataan SQL, penggunaan memori pekerjaan komputasi mungkin melebihi ukuran memori yang dialokasikan secara default jika sejumlah besar data dihitung dan terjadi skew data. Dalam kasus ini, jalankan perintah set odps.sql.udf.joiner.jvm.memory=xxxx; pada tingkat sesi untuk menyelesaikan masalah. Untuk informasi lebih lanjut tentang UDF, lihat FAQ tentang MaxCompute UDF.

  • Jika nama UDF sama dengan nama fungsi bawaan, UDF akan diprioritaskan untuk dipanggil. Sebagai contoh, jika UDF CONCAT dan fungsi bawaan CONCAT keduanya ada di MaxCompute, sistem secara otomatis memanggil UDF CONCAT alih-alih fungsi bawaan CONCAT. Jika Anda ingin memanggil fungsi bawaan, tambahkan simbol :: sebelum fungsi bawaan. Contohnya: select ::concat('ab', 'c');.

Proses pengembangan

Bagian ini menjelaskan proses pengembangan UDAF.

Menggunakan Java untuk mengembangkan UDF

Gambar berikut menunjukkan cara mengembangkan MaxCompute UDF dalam Java.

Java开发流程

Prosedur

Deskripsi

Platform

Perhatian atau referensi

1

Opsional

Sebelum Anda dapat menggunakan Maven untuk menulis kode, Anda harus menambahkan dependensi SDK terkait ke file POM. Ini memastikan bahwa kode dapat dikompilasi. Dependensi SDK berikut menunjukkan contohnya:

<dependency>
    <groupId>com.aliyun.odps</groupId>
    <artifactId>odps-sdk-udf</artifactId>
   <version>0.29.10-public</version>
</dependency>

Anda dapat mencari odps-sdk-udf dari repositori Maven untuk mendapatkan versi dependensi SDK.

  • IntelliJ IDEA (Maven)

Tidak ada.

2

Wajib

Tulis kode UDF berdasarkan kebutuhan bisnis Anda.

Saat Anda menggunakan Java untuk mengembangkan UDF, pastikan persyaratan spesifikasi pengembangan Java UDF terpenuhi. Untuk informasi lebih lanjut, lihat Spesifikasi pengembangan UDF dan proses umum (Java).

3

Wajib

Debug UDF dengan menjalankannya di mesin lokal Anda atau dengan melakukan pengujian unit untuk memeriksa apakah hasilnya sesuai harapan.

4

Wajib

Debug kode UDF untuk memastikan bahwa kode tersebut dikemas menjadi file JAR setelah berhasil dijalankan di mesin lokal Anda.

5

Wajib

Unggah file JAR sebagai sumber daya ke proyek MaxCompute Anda.

Anda dapat menggunakan tiga metode berikut untuk mengunggah sumber daya dan mendaftarkan fungsi:

6

Wajib

Buat UDF berdasarkan file JAR yang Anda unggah.

7

Opsional

Panggil UDF dalam kode kueri data.

Tidak ada.

Menggunakan Python untuk mengembangkan UDF

Gambar berikut menunjukkan cara mengembangkan MaxCompute UDF dalam Python.Python开发流程

Prosedur

Deskripsi

Platform

Perhatian atau referensi

1

Wajib

Tulis UDF berdasarkan kebutuhan bisnis Anda.

MaxCompute Studio

Saat Anda menggunakan Python untuk mengembangkan UDF, pastikan persyaratan spesifikasi pengembangan Python UDF terpenuhi. Untuk informasi lebih lanjut, lihat Spesifikasi pengembangan UDF dan proses umum (Python 3) atau Spesifikasi pengembangan UDF dan proses umum (Python 2).

2

Wajib

Debug UDF dengan menjalankannya di mesin lokal Anda atau dengan melakukan pengujian unit untuk memeriksa apakah hasilnya sesuai harapan.

3

Wajib

Unggah file Python atau sumber daya yang diperlukan, seperti sumber daya file, sumber daya tabel, dan paket pihak ketiga, ke proyek MaxCompute.

Anda dapat menggunakan tiga metode berikut untuk mengunggah sumber daya dan mendaftarkan fungsi:

4

Wajib

Buat UDF berdasarkan file Python yang diunggah atau sumber daya yang diperlukan.

5

Opsional

Panggil UDF dalam kode kueri data.

Tidak ada.

Panggil UDF

Setelah mengembangkan dan mendaftarkan UDF di MaxCompute, Anda dapat menggunakannya dalam proses pengembangan pekerjaan selanjutnya. Gunakan metode berikut untuk memanggil UDF:

  • Gunakan UDF dalam proyek MaxCompute: Metodenya mirip dengan penggunaan fungsi bawaan.

  • Gunakan UDF lintas proyek: Gunakan UDF Proyek B di Proyek A. Contohnya: select B:udf_in_other_project(arg0, arg1) as res from table_t;. Untuk informasi lebih lanjut tentang berbagi lintas proyek, lihat Akses Sumber Daya Lintas Proyek Berbasis Paket.