Tüm Ürünler
Search
Belge Merkezi

MaxCompute:UDTF'ye genel bakış

Son Güncelleme:Oct 04, 2026

Kullanıcı tanımlı tablo döndüren işlevler (UDTF), Java veya Python ile özel işlevler yazarak MaxCompute'ın yerleşik yeteneklerini genişletmenizi sağlar. Bir UDTF, tek bir giriş satırını okur ve birden fazla satır döndürür; çıktı bir tablo olarak ele alınır.

MaxCompute, EXPLODE gibi bazı yerleşik UDTF'ler içerir. Daha fazla bilgi için bkz. Diğer işlevler ve Karmaşık tür işlevleri.

UDTF'lerin ne zaman kullanılması gerekir?

Yerleşik işlevler mantığınızı ifade edemediğinde UDTF kullanın. Örneğin, her giriş satırı başına değişken sayıda çıkış satırı üretmeniz gerektiğinde veya dönüşümünüzün bir bölümdeki satırlar arasında biriken duruma bağlı olduğu senaryolarda UDTF'ler uygundur.

Yerleşik işlevler, MaxCompute'ın dağıtılmış altyapısı için optimize edilmiştir ve büyük ölçeklerde UDTF'lerden daha iyi performans gösterir. Kullanım durumunuzu kapsadığı sürece yerleşik işlevleri kullanın.

Desteklenen diller

Dil Sürüm
Java —
Python 2 2,7
Python 3 CPython 3.7.3

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

Sınırlamalar

  • İnternet erişimi: UDF'ler varsayılan olarak İnternet'e erişemez. İnternet erişimini etkinleştirmek için ağ bağlantısı başvuru formunu doldurun. Onayın ardından MaxCompute teknik destek ekibi bağlantıyı kurmak üzere sizinle iletişime geçecektir. Ayrıntılar için bkz. Ağ bağlantısı süreci.

  • Aynı SELECT içinde başka sütunlar olamaz: Bir UDTF çağıran SELECT deyimi başka sütunlara veya ifadelere başvuramaz. Aşağıdaki deyim geçerli değildir:

    -- Invalid: mixes a UDTF with another column
    select value, user_udtf(key) as mycol ...
  • İç içe geçiş yok: UDTF'ler diğer UDTF'lerin içinde iç içe kullanılamaz. Aşağıdaki deyim geçerli değildir:

    -- Invalid: user_udtf2 is nested inside user_udtf1
    select user_udtf1(user_udtf2(key)) as mycol...;
  • GROUP BY, DISTRIBUTE BY ve SORT BY ile uyumsuzluk: Bir UDTF, bu yan tümcelerin bulunduğu aynı SELECT deyimi içinde yer alamaz. Aşağıdaki deyim geçerli değildir:

    -- Invalid: UDTF used with GROUP BY
    select user_udtf(key) as mycol ... group by mycol;

Kullanım notları

Bellek: Bir UDF işi veri çarpıklığıyla birlikte büyük hacimli verileri işliyorsa, iş varsayılan JVM bellek tahsisini aşabilir. Belleği artırmak için oturum düzeyinde aşağıdaki komutu çalıştırın:

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

UDF SSS konularının tam listesi için bkz. MaxCompute UDF'leri hakkında SSS.

Ad çakışmaları: Bir UDF'nin adı yerleşik bir işlevle aynıysa MaxCompute UDF'yi çağırır. Yerleşik işlevi açıkça çağırmak için işlev adından önce :: önekini kullanın:

select ::concat('ab', 'c');

Geliştirme süreci

Adımlar Java ve Python arasında küçük farklılıklar gösterir.

Java

Adım Zorunlu Açıklama Araç
1 Hayır Maven SDK bağımlılığını POM dosyanıza ekleyin. En son sürümü almak için Maven depolarında odps-sdk-udf arayın. Örnek kod parçacığı: <dependency><groupId>com.aliyun.odps</groupId><artifactId>odps-sdk-udf</artifactId><version>0.29.10-public</version></dependency> IntelliJ IDEA (Maven)
2 Evet UDTF kodunu yazın. IntelliJ IDEA (Maven) veya MaxCompute Studio
3 Evet UDTF'yi şirket içi makinenizde hata ayıklayın veya birim testi aracılığıyla test edin. —
4 Evet UDTF'yi bir JAR dosyasında paketleyin. —
5 Evet JAR dosyasını kaynak olarak MaxCompute projenize yükleyin. MaxCompute istemcisi, MaxCompute Studio veya DataWorks
6 Evet Yüklenen JAR dosyasını kullanarak UDTF'yi kaydedin. —
7 Hayır UDTF'yi bir SQL sorgusunda çağırın. —

2. adım için bkz. Java'da UDF geliştirme. 5. adım için bkz. Kaynak ekleme ve İşlev oluşturma. MaxCompute Studio kullanarak paketleme ve kaydetme işlemlerini tek bir akışta yapmak için bkz. Java programını paketleme, paketi yükleme ve MaxCompute UDF oluşturma.

Write a UDF in Java

Python

Adım Zorunlu Açıklama Araç
1 Evet UDTF kodunu yazın. MaxCompute Studio
2 Evet UDTF'yi şirket içi makinenizde hata ayıklayın veya birim testi aracılığıyla test edin. —
3 Evet Python dosyalarını veya gerekli kaynakları (dosya kaynakları, tablo kaynakları, üçüncü taraf paketler) MaxCompute projenize yükleyin. MaxCompute istemcisi, MaxCompute Studio veya DataWorks
4 Evet Yüklenen dosyalara göre UDTF'yi kaydedin. —
5 Hayır UDTF'yi bir SQL sorgusunda çağırın. —

1. adım için bkz. Python UDF geliştirme. 3. adım için bkz. Kaynak ekleme ve İşlev oluşturma. MaxCompute Studio kullanarak yükleme ve kaydetme işlemlerini tek bir akışta yapmak için bkz. Python programını yükleme ve MaxCompute UDF oluşturma.

Write a UDF in Python

UDTF çağırma

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

Projeler arasında: B projesindeki bir UDTF'yi A projesi içinden çağırmak için aşağıdaki sözdizimini kullanın:

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

Projeler arası kaynak paylaşımı hakkında daha fazla bilgi için bkz. Projeler arası paket tabanlı kaynak paylaşımı.

Sonraki adımlar