Tüm Ürünler
Search
Belge Merkezi

MaxCompute:Genel Bakış

Son Güncelleme:Oct 10, 2026

MaxCompute, iş gereksinimlerinizi karşılamak için çeşitli yerleşik işlevler sunar. MaxCompute'ün yerleşik işlevleri iş ihtiyaçlarınızı karşılamıyorsa, bu konuda açıklanan geliştirme sürecini ve örnekleri temel alarak kod yazıp kullanıcı tanımlı işlevler (UDF) oluşturabilirsiniz.

Arka Plan Bilgileri

Geniş anlamda kullanıcı tanımlı işlevler üç türden oluşur: kullanıcı tanımlı skaler işlev (UDF), kullanıcı tanımlı tablo değerli işlev (UDTF) ve kullanıcı tanımlı toplam işlevi (UDAF). Dar anlamda UDF'ler yalnızca kullanıcı tanımlı skaler işlevleri ifade eder. Aşağıdaki tabloda MaxCompute'ün desteklediği UDF türleri açıklanmaktadır.


UDF türü


Ad


Senaryo


UDF


kullanıcı tanımlı skaler işlev


Bu UDF türü, girdi verileri ile çıktı verilerinin birebir eşleme ilişkisinde olduğu senaryolar için uygundur. Bir UDF'nin girdi ve çıktı verileri arasında birebir eşleme kurulur. UDF her bir veri satırını okuduğunda bir çıktı değeri döndürür.


UDTF


kullanıcı tanımlı tablo değerli işlev, tablo UDF'si olarak da bilinir


Bu UDF türü, girdi verileri ile çıktı verilerinin bire çok eşleme ilişkisinde olduğu senaryolar için uygundur. Bir UDTF'nin girdi ve çıktı verileri arasında bire çok eşleme kurulur. UDTF her bir veri satırını okuduğunda bir tablo olarak kabul edilen birden çok değer döndürür.


UDAF


kullanıcı tanımlı toplam işlevi


Bir UDAF'nin girdi ve çıktı verileri arasında çoktan bire eşleme kurulur. Birden çok girdi kaydı toplanarak tek bir çıktı değeri üretilir.

Yukarıda belirtilen UDF'lere ek olarak MaxCompute, özel senaryolar için aşağıdaki UDF'leri de sunar.


UDF türü


Senaryo


Kod Gömülü UDF'ler


MaxCompute UDF geliştirme sürecini basitleştirmek ve kod mantığını görüntülemek istiyorsanız Java veya Python kodunu SQL betiklerine gömebilirsiniz.


UDF'ler (SQL kullanıcı tanımlı işlevleri)


Kodunuz yinelenen bölümler içeriyorsa kod yeniden kullanım oranını artırmak ve geliştirme sürecini basitleştirmek için SQL UDF'lerini kullanabilirsiniz.


Coğrafi Mekansal UDF'ler


Hive coğrafi mekansal işlevlerini kullanarak MaxCompute'de mekansal verileri analiz edebilirsiniz.

Sınırlamalar

  • UDF'ler aracılığıyla İnternet'e erişim

    Varsayılan olarak MaxCompute, UDF'ler kullanarak İnternet'e erişmenize izin vermez. UDF'ler aracılığıyla İnternet'e erişmek istiyorsanız iş gereksinimlerinize göre ağ bağlantısı başvuru formunu doldurun ve başvuruyu gönderin. MaxCompute teknik destek ekibi ağ bağlantısını etkinleştirmek için sizinle hızlı bir şekilde iletişime geçecektir. Ağ bağlantısı başvuru formunun nasıl doldurulacağı hakkında daha fazla bilgi için bkz. Ağ bağlantısı süreci.

  • UDF'ler aracılığıyla VPC'ye erişim

    Varsayılan olarak MaxCompute, UDF'ler kullanarak VPC'lerdeki kaynaklara erişmenize izin vermez. UDF'ler aracılığıyla bir VPC'deki kaynaklara erişmek için MaxCompute ile VPC arasında bir ağ bağlantısı kurmanız gerekir. İlgili işlemler hakkında daha fazla bilgi için bkz. Bir UDF'den VPC kaynaklarına erişim.

  • UDF'ler, UDAF'ler veya UDTF'ler kullanarak tablo verilerini okuma

    UDF'ler, UDAF'ler veya UDTF'ler kullanarak aşağıdaki tablo türlerinden veri okuyamazsınız:

    • Şema evriminin uygulandığı tablo

    • Karmaşık veri türleri içeren tablo

    • JSON veri türleri içeren tablo

    • İşlemsel tablo

Dikkat Edilmesi Gerekenler

UDF'leri kullanmadan önce aşağıdaki hususlara dikkat edin:

  • UDF'ler performans açısından yerleşik işlevlerle rekabet edemez. İş mantığınızı uygulamak için öncelikli olarak yerleşik işlevleri kullanmanızı öneririz.

  • SQL deyimlerinde bir UDF kullanırken, büyük miktarda veri işlendiğinde ve veri eğriliği meydana geldiğinde bir hesaplama işinin bellek kullanımı varsayılan olarak ayrılan bellek boyutunu aşabilir. Bu durumda sorunu çözmek için oturum düzeyinde set odps.sql.udf.joiner.jvm.memory=xxxx; komutunu çalıştırabilirsiniz. UDF'ler hakkında daha fazla bilgi için bkz. MaxCompute UDF'leri hakkında SSS.

  • Bir UDF'nin adı yerleşik bir işlevin adıyla aynıysa UDF öncelikli olarak çağrılır. Örneğin, MaxCompute'de hem CONCAT UDF'si hem de CONCAT yerleşik işlevi varsa sistem otomatik olarak yerleşik CONCAT işlevi yerine CONCAT UDF'sini çağırır. Yerleşik işlevi çağırmak istiyorsanız yerleşik işlevin önüne :: sembolünü eklemeniz gerekir. Örneğin, select ::concat('ab', 'c'); kullanabilirsiniz.

UDF Geliştirme: Desteklenen Araçlar ve Genel Süreç

Bu bölümde bir UDF, UDTF veya UDAF'in nasıl geliştirileceği açıklanmaktadır.

Not

Kod Gömülü UDF'ler, UDF'ler (SQL kullanıcı tanımlı işlevleri) ve Coğrafi Mekansal UDF'ler geliştirme süreci farklıdır. Daha fazla bilgi için ilgili belgelere bakın.

UDF Geliştirmek İçin Java Kullanma

Aşağıdaki şekil, Java'da bir MaxCompute UDF'in nasıl geliştirileceğini göstermektedir.

Java开发流程

Prosedür

Açıklama

Platform

Dikkat Edilmesi Gerekenler veya Referanslar

1

İsteğe Bağlı

Maven kullanarak kod yazabilmeniz için kodun derlenebilmesini sağlamak üzere ilgili SDK bağımlılıklarını POM dosyasına eklemeniz gerekir. Aşağıdaki SDK bağımlılığı bir örnek göstermektedir:

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

SDK bağımlılığının sürümünü almak için odps-sdk-udf ifadesini Maven depolarında arayabilirsiniz.

  • IntelliJ IDEA (Maven)

Yok.

2

Zorunlu

İş gereksinimlerinize göre UDF kodu yazın.

Java kullanarak UDF geliştirirken Java UDF geliştirme spesifikasyonlarının gerekliliklerinin karşılandığından emin olun. Daha fazla bilgi için bkz. UDF geliştirme spesifikasyonları ve genel süreç (Java).

3

Zorunlu

Sonucun beklentileri karşılayıp karşılamadığını kontrol etmek için UDF'i yerel makinenizde çalıştırarak veya birim testi yaparak hata ayıklayın.

4

Zorunlu

Kodun yerel makinenizde başarıyla çalıştırıldıktan sonra bir JAR dosyasına paketlendiğinden emin olmak için UDF kodunda hata ayıklayın.

5

Zorunlu

JAR dosyasını bir kaynak olarak MaxCompute projenize yükleyin.

Kaynakları yüklemek ve işlevleri kaydetmek için aşağıdaki üç yöntemi kullanabilirsiniz:

6

Zorunlu

Yüklediğiniz JAR dosyasını temel alarak bir UDF oluşturun.

7

İsteğe Bağlı

Sorgu verisi kodunda UDF'i çağırın.

Yok.

UDF Geliştirmek İçin Python Kullanma

Aşağıdaki şekil, Python'da bir MaxCompute UDF'in nasıl geliştirileceğini göstermektedir.Python开发流程

Prosedür

Açıklama

Platform

Dikkat Edilmesi Gerekenler veya Referanslar

1

Zorunlu

İş gereksinimlerinize göre bir UDF yazın.

MaxCompute Studio'ya Giriş

Python kullanarak UDF geliştirirken Python UDF geliştirme spesifikasyonlarının gerekliliklerinin karşılandığından emin olun. Daha fazla bilgi için bkz. UDF geliştirme spesifikasyonları ve genel süreç (Python 3) veya UDF geliştirme spesifikasyonları ve genel süreç (Python 2).

2

Zorunlu

Sonucun beklentileri karşılayıp karşılamadığını kontrol etmek için UDF'i yerel makinenizde çalıştırarak veya birim testi yaparak hata ayıklayın.

3

Zorunlu

Python dosyalarını veya dosya kaynakları, tablo kaynakları ve üçüncü taraf paketler gibi gerekli kaynakları bir MaxCompute projesine yükleyin.

Kaynakları yüklemek ve işlevleri kaydetmek için aşağıdaki üç yöntemi kullanabilirsiniz:

4

Zorunlu

Yüklenen Python dosyalarını veya gerekli kaynakları temel alarak bir UDF oluşturun.

5

İsteğe Bağlı

Sorgu verisi kodunda UDF'i çağırın.

Yok.

Geliştirme Referansı: MaxCompute SDK

Aşağıdaki tabloda MaxCompute tarafından sağlanan SDK'ler açıklanmaktadır. Her bir SDK'de yer alan paketler ve paketlerdeki sınıflar hakkında daha fazla bilgi için bkz. MaxCompute SDK.


SDK adı


Açıklama


odps-sdk-core


MaxCompute'ün temel kaynaklarını yönetmek için sınıflar sağlar.


odps-sdk-commons


Java için ortak Yardımcı Programlar (Utils) sağlar.


odps-sdk-udf


UDF işlevselliği için birincil arabirimi sağlar.


odps-sdk-mapred


MapReduce API'sini sağlar.


odps-sdk-graph


Graph API'sini sağlar.

Bir UDF Çağırma

Bir UDF geliştirdikten ve UDF'i MaxCompute'de kaydettikten sonra sonraki iş geliştirme sürecinde UDF'i kullanabilirsiniz. Bir UDF'i çağırmak için aşağıdaki yöntemleri kullanın:

  • Bir MaxCompute projesinde UDF kullanma: Yöntem, yerleşik işlevleri kullanmaya benzer. Bir kullanıcı tanımlı işlevi, yerleşik bir işlevi kullandığınız şekilde kullanabilirsiniz.

  • Projeler arası UDF kullanma: B Projesindeki bir UDF'i A Projesinde kullanma. Aşağıdaki deyim bir örnek göstermektedir: select B:udf_in_other_project(arg0, arg1) as res from table_t;. Projeler arası paylaşım hakkında daha fazla bilgi için bkz. Paketlere dayalı projeler arası kaynak erişimi.

UDF Geliştirme Örneği