全部产品
Search
文档中心

MaxCompute:Ikhtisar

更新时间:Jul 06, 2025

MaxCompute menyediakan berbagai fungsi bawaan untuk memenuhi kebutuhan bisnis Anda. Jika fungsi bawaan MaxCompute tidak mencukupi, Anda dapat membuat fungsi yang didefinisikan pengguna (UDF) dengan mengikuti proses pengembangan dan contoh-contoh yang dijelaskan dalam topik ini.

Informasi latar belakang

Secara luas, UDF mencakup fungsi skalar yang didefinisikan pengguna, fungsi agregat yang didefinisikan pengguna (UDAF), dan fungsi bernilai tabel yang didefinisikan pengguna (UDTF). Dalam arti sempit, UDF hanya merujuk pada fungsi skalar yang didefinisikan pengguna. Tabel berikut menjelaskan jenis-jenis UDF dalam MaxCompute.

Jenis UDF

Skenario

UDF

Jenis UDF ini berlaku untuk skenario di mana data masukan dan data keluaran memiliki hubungan pemetaan satu-satu. Pemetaan satu-satu dibuat antara data masukan dan data keluaran dari sebuah UDF. Setiap kali UDF membaca satu baris data, ia mengembalikan satu nilai keluaran.

UDTF

Jenis UDF ini berlaku untuk skenario di mana data masukan dan data keluaran memiliki hubungan pemetaan satu-banyak. Pemetaan satu-banyak dibuat antara data masukan dan data keluaran dari sebuah UDTF. Setiap kali UDTF membaca satu baris data, ia mengembalikan beberapa nilai, yang dianggap sebagai tabel.

UDAF

Pemetaan banyak-satu dibuat antara data masukan dan data keluaran dari sebuah UDAF. Beberapa catatan masukan digabungkan untuk menghasilkan satu nilai keluaran.

Selain UDF tersebut, MaxCompute juga menawarkan UDF khusus untuk skenario tertentu.

Jenis UDF

Skenario

UDF dengan kode tertanam

Jika Anda ingin menyederhanakan proses pengembangan UDF MaxCompute dan melihat logika kode, Anda dapat menyematkan kode Java atau Python ke dalam skrip SQL.

UDF SQL

Jika kode Anda mengandung kode duplikat, Anda dapat menggunakan UDF SQL untuk meningkatkan tingkat penggunaan ulang kode dan menyederhanakan proses pengembangan.

UDF Geospasial

Anda dapat menggunakan fungsi geospasial Hive untuk menganalisis data spasial di MaxCompute.

Batasan

  • Mengakses Internet menggunakan UDF

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

  • Mengakses VPC menggunakan UDF

    Secara default, MaxCompute tidak mengizinkan akses ke sumber daya di VPC melalui UDF. Untuk menggunakan UDF mengakses sumber daya di VPC, Anda harus membangun koneksi jaringan antara MaxCompute dan VPC. Untuk informasi lebih lanjut, lihat Gunakan UDF untuk Mengakses Sumber Daya di 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 seefisien fungsi bawaan dalam hal performa. Kami menyarankan Anda memprioritaskan penggunaan fungsi bawaan untuk mengimplementasikan logika bisnis Anda.

  • Ketika 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 tersebut. Untuk informasi lebih lanjut tentang UDF, lihat FAQ tentang UDF MaxCompute.

  • Jika nama UDF sama dengan nama fungsi bawaan, UDF akan diprioritaskan 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');.

Platform pengembangan dan proses pengembangan

Bagian ini menjelaskan cara mengembangkan UDF, UDTF, atau UDAF.

Catatan

Proses pengembangan UDF dengan kode tertanam, UDF SQL, dan UDF Geospasial berbeda. Untuk informasi lebih lanjut, lihat dokumentasi terkait.

Menggunakan Java untuk mengembangkan UDF

Gambar berikut menunjukkan cara mengembangkan UDF MaxCompute 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. Contoh dependensi SDK berikut menunjukkan contoh:

<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.

Ketika Anda menggunakan Java untuk mengembangkan UDF, pastikan persyaratan spesifikasi pengembangan UDF Java 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 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 data query.

Tidak ada.

Menggunakan Python untuk mengembangkan UDF

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

Prosedur

Deskripsi

Platform

Perhatian atau referensi

1

Wajib

Tulis UDF berdasarkan kebutuhan bisnis Anda.

MaxCompute Studio

Ketika Anda menggunakan Python untuk mengembangkan UDF, pastikan persyaratan spesifikasi pengembangan UDF Python 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 data query.

Tidak ada.

Referensi pengembangan: MaxCompute SDK

Tabel berikut menjelaskan SDK yang disediakan oleh MaxCompute. Untuk informasi lebih lanjut tentang paket yang termasuk dalam setiap SDK dan kelas dalam paket tersebut, lihat MaxCompute SDK.

Nama SDK

Deskripsi

odps-sdk-core

Menyediakan kelas untuk mengelola sumber daya dasar MaxCompute.

odps-sdk-commons

Menyediakan Utilitas umum untuk Java.

odps-sdk-udf

Menyediakan UDF.

odps-sdk-mapred

Menyediakan API MapReduce.

odps-sdk-graph

Menyediakan API Graph.

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 dari Proyek B di Proyek A. Contoh pernyataan: 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.

Contoh pengembangan UDF