MaxCompute projesinde kullanıcı tanımlı bir işlev (UDF) oluşturur.
Önkoşullar
Başlamadan önce şunları yaptığınızdan emin olun:
Gerekli kaynakları,
ADD JARkomutunu kullanarak MaxCompute projenize ekleyin. Daha fazla bilgi için bkz. ADD JAR.
Sınırlamalar
İşlev adları bir proje içinde benzersiz olmalıdır. Mevcut bir işlevle aynı ada sahip bir işlev oluşturamazsınız.
Kullanıcı tanımlı işlevler, MaxCompute'ün yerleşik işlevlerinin üzerine yazamaz. Yalnızca proje sahibi, kullanıcı tanımlı işlevleri kullanarak yerleşik işlevlerin üzerine yazabilir. Bir kullanıcı tanımlı işlev yerleşik bir işlevin üzerine yazarsa, SQL ifadesi çalıştırıldıktan sonra işin Logview bölümündeki Summary alanında bir uyarı görüntülenir.
Söz dizimi
CREATE FUNCTION <function_name> AS <'package_to_class'> USING <'resource_list'>;
Parametreler
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Python kullanıcı tanımlı işlevleri için package_to_class hakkında notlar
Python betiği adı, kaynağı benzersiz şekilde tanımlayan temel kaynak adına karşılık gelir. Örneğin, bir kaynağı pyudf_test.py olarak yüklerseniz ve ardından DataStudio'da PYUDF_TEST.py olarak yeniden adlandırırsanız veya MaxCompute istemcisini kullanarak üzerine yazarsanız, temel kaynak adı yine de pyudf_test.py olarak kalır. Bu nedenle, kullanıcı tanımlı işlevi kaydederken sınıf adı pyudf_test.SampleUDF olmalıdır. Tüm kaynakların temel adlarını görüntülemek için LIST RESOURCES; komutunu çalıştırın.
resource_list hakkında notlar
Liste, kullanıcı tanımlı işlev kodunu içeren kaynakları içermelidir. Bu kaynakların MaxCompute'e zaten yüklendiğinden emin olun.
Kullanıcı tanımlı işlev, kaynak dosyalarını okumak için Dağıtılmış Önbellek API'sini çağırıyorsa bu kaynak dosyalarını da listeye dahil edin.
Şema etkinleştirilmişse ve diğer projelerdeki kaynakları kullanmanız gerekiyorsa bkz. Work with objects in a schema.
Örnekler
Java kullanıcı tanımlı işlevi oluşturma
Aşağıdaki örnekte my_lower işlevi oluşturulur. Java kullanıcı tanımlı işlev sınıfı org.alidata.odps.udf.examples.Lower, my_lower.jar dosyasında bulunur.
CREATE FUNCTION my_lower AS 'org.alidata.odps.udf.examples.Lower' USING 'my_lower.jar';
Başka bir projeden Python kullanıcı tanımlı işlevi oluşturma
Aşağıdaki örnekte my_lower işlevi oluşturulur. Python kullanıcı tanımlı işlev sınıfı MyLower, test_project projesindeki pyudf_test.py dosyasında tanımlanmıştır.
CREATE FUNCTION my_lower as 'pyudf_test.MyLower' using 'test_project/resources/pyudf_test.py';
Birden fazla kaynak bağımlılığı olan bir kullanıcı tanımlı işlev oluşturma
Aşağıdaki örnekte test_udtf işlevi oluşturulur. Java kullanıcı tanımlı işlev sınıfı com.aliyun.odps.examples.udf.UDTFResource, udtfexample1.jar dosyasında bulunur. İşlev ayrıca bir FILE kaynağına (file_resource.txt), bir Table kaynağına (table_resource1) ve bir Archive kaynağına (test_archive.zip) bağımlıdır.
CREATE FUNCTION test_udtf AS 'com.aliyun.odps.examples.udf.UDTFResource' USING 'udtfexample1.jar, file_resource.txt, table_resource1, test_archive.zip';
Sonraki adımlar
FUNCTION: Yalnızca geçerli SQL betiğine uygulanan ve MaxCompute meta veri sisteminde depolanmayan geçici bir SQL işlevi oluşturun.
DROP FUNCTION: MaxCompute projesinden mevcut bir kullanıcı tanımlı işlevi silin.
DELETE FUNCTION: Bir MaxCompute giriş nesnesinin
delete_function()yöntemini kullanarak bir işlevi silin.DESC FUNCTION: Kullanıcı tanımlı bir işlevin adını, sahibini, oluşturma zamanını, sınıf adını ve kaynak listesini içeren ayrıntılarını görüntüleyin.
LIST FUNCTIONS: MaxCompute projesindeki tüm kullanıcı tanımlı işlevleri görüntüleyin.
UPDATE FUNCTION: MaxCompute'ün
updateyöntemini kullanarak bir kullanıcı tanımlı işlevi güncelleyin.