Tüm Ürünler
Search
Belge Merkezi

MaxCompute:UDAF overview

Son Güncelleme:Oct 04, 2026

Kullanıcı tanımlı bir toplama işlevi (UDAF), birden çok giriş kaydını tek bir çıkış değerine eşler. Toplama mantığınızı karşılayan yerleşik bir toplama işlevi yoksa UDAF kullanın. MaxCompute, Java veya Python ile yazılan UDAF'leri destekler.

UDAF ne zaman kullanılır?

Yerleşik işlevler dağıtılmış işlem için optimize edilmiştir ve UDAF'lerden daha iyi performans gösterir. Kullanım durumunuzu karşılayan bir yerleşik işlev varsa onu kullanın.

Toplama mantığınız yerleşik işlevlerle ifade edilemiyorsa UDAF yazın. Buna örnek olarak özel istatistiksel modeller, alana özgü puanlama veya çok alanlı ağırlıklı toplamalar verilebilir.

UDAF türleri

Tür Dil Çalışma Zamanı
Java UDAF Java JVM
Python 2 UDAF Python Python 2.7
Python 3 UDAF Python CPython 3.7.3

Uygulama ayrıntıları için bkz. Java UDAF'leri, Python 2 UDAF ve Python 3 UDAF.

Geliştirme süreci

Java UDAF

Aşağıdaki şekil Java UDAF geliştirme iş akışını gösterir.

Write a UDF in Java

Adım Gerekli mi? Açıklama Platform Referanslar
1 Hayır POM dosyanıza odps-sdk-udf SDK bağımlılığını ekleyin. Örnek: <dependency><groupId>com.aliyun.odps</groupId><artifactId>odps-sdk-udf</artifactId><version>0.29.10-public</version></dependency>. En son sürümü Maven depolarında arayın. IntelliJ IDEA (Maven) —
2 Evet UDAF'i yazın. IntelliJ IDEA (Maven) ve MaxCompute Studio Java'da UDF geliştirme
3 Evet UDAF'i yerel makinenizde veya birim testleriyle hata ayıklayın. — —
4 Evet Kodu bir JAR dosyasında paketleyin. — —
5 Evet JAR dosyasını MaxCompute projenize kaynak olarak yükleyin. MaxCompute istemcisi (odpscmd), MaxCompute Studio, DataWorks MaxCompute istemcisi: Kaynak ekleme, UDF oluşturma; MaxCompute Studio: Java programını paketleme, paketi yükleme ve MaxCompute UDF oluşturma; DataWorks: MaxCompute kaynaklarını oluşturma ve kullanma, MaxCompute işlevi oluşturma ve kullanma
6 Evet Yüklenen JAR dosyasına dayalı bir UDF oluşturun. — —
7 Hayır UDAF'i bir sorguda çağırın. — —

Python UDAF

Aşağıdaki şekil Python UDAF geliştirme iş akışını gösterir.

Write a UDF in Python

Adım Gerekli mi? Açıklama Platform Referanslar
1 Evet UDAF'i yazın. MaxCompute Studio Python UDF geliştirme
2 Evet UDAF'i yerel makinenizde veya birim testleriyle hata ayıklayın. — —
3 Evet Python dosyalarını ve gerekli tüm kaynakları (dosya kaynakları, tablo kaynakları, üçüncü taraf paketler) MaxCompute projenize yükleyin. MaxCompute istemcisi (odpscmd), MaxCompute Studio, DataWorks MaxCompute istemcisi: Kaynak ekleme, UDF oluşturma; MaxCompute Studio: Python programını yükleme ve MaxCompute UDF oluşturma; DataWorks: İşlevleri kaydetmek için kaynakları kullanma
4 Evet Yüklenen Python dosyalarına veya gerekli kaynaklara dayalı bir UDF oluşturun. — —
5 Hayır UDAF'i bir sorguda çağırın. — —

Sınırlamalar

UDAF'ler İnternet'e erişemez. İnternet erişimini etkinleştirmek için ağ bağlantısı başvurusu gönderin. Onaylandıktan sonra MaxCompute teknik destek ekibi bağlantıyı kurmanıza yardımcı olur. Ayrıntılar için bkz. Ağ bağlantısı süreci.

Kullanım notları

  • Performans: Yerleşik işlevler UDAF'lerden daha iyi performans gösterir. Kullanım durumunuzu karşılayan bir yerleşik işlev varsa onu kullanın.

  • Bellek: UDAF kullanan bir SQL deyimi, büyük veri hacimleri veya veri çarpıklığı nedeniyle varsayılan bellek tahsisini aşarsa limiti artırmak için oturum düzeyinde aşağıdaki komutu çalıştırın:

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

    Daha fazla bilgi için bkz. MaxCompute UDF'leri hakkında SSS.

  • Ad çakışması: Bir UDAF yerleşik bir işlevle aynı ada sahipse MaxCompute UDAF'i çağırır. Bunun yerine yerleşik işlevi çağırmak için başına :: önekini ekleyin. Örnek: select ::concat('ab', 'c');

UDAF çağırma

Aynı proje içinde: UDAF'i bir yerleşik işlevi çağırdığınız şekilde çağırın.

Projeler arasında: Proje adını önek olarak kullanın. Aşağıdaki örnek, A projesi içinden B projesindeki udf_in_other_project öğesini çağırır:

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

Projeler arası kaynak paylaşımı kurulumu için bkz. Paketlere dayalı projeler arası kaynak erişimi.