全部產品
Search
文件中心

MaxCompute:CREATE FUNCTION

更新時間:Jun 19, 2024

在MaxCompute專案中註冊自訂函數。

前提條件

註冊自訂函數前,請先使用add jar <localfile> [comment '<comment>'][-f];命令將自訂函數添加至MaxCompute專案中。詳情請參見ADD JAR

使用限制

  • 函數名稱全域唯一,同名函數只能註冊一次。

  • 自訂函數無法覆蓋系統內建函數。只有專案Owner才有權利覆蓋內建函數。如果您使用了覆蓋內建函數的自訂函數,在SQL執行結束後,會在作業相應Logview的Summary中列印出Warning資訊。

命令格式

create function <function_name> as <'package_to_class'> using <'resource_list'>;

參數說明

  • function_name:必填。建立的自訂函數名稱。

  • package_to_class:必填。自訂函數的類,區分大小寫,需要用英文引號(' ')引起來。

    • Java UDF:此名稱為從頂層包名一直到實現UDF類的類名。

    • Python UDF:此名稱為Python指令碼名.類名

      說明

      Python指令碼名為底層唯一標識的資源名。MaxCompute的資源名大小寫不敏感,例如第一次上傳資源時資源名為pyudf_test.py,後續在DataStudio重新命名資源或用MaxCompute用戶端覆蓋資源時將資源名重新命名為PYUDF_TEST.py,此時底層唯一標識的資源名仍然為pyudf_test.py。因此註冊自訂函數時,類名仍然需要填pyudf_test.SampleUDF。您可以通過list resource;命令查看所有資源在底層唯一標識的資源名。

  • resource_list:必填。自訂函數所用到的資源清單。

    • 此資源清單必須包括自訂函數代碼所在的資源,且資源已經上傳至MaxCompute。

    • 如果您的代碼通過Distributed Cache介面讀取資源檔,此列表中還要包括自訂函數所讀取的資源檔列表。

    • 資源清單由多個資源名組成,資源名之間用英文逗號(,)分隔,且資源清單必須用英文引號(' ')引起來。

    • 如果需要指定資源所在的專案,格式為<project_name>/resources/<resource_name>

使用樣本

  • 樣本1:建立函數my_lower。假設Java UDF類org.alidata.odps.udf.examples.Lowermy_lower.jar中。

    create function my_lower as 'org.alidata.odps.udf.examples.Lower' using 'my_lower.jar';
  • 樣本2:建立函數my_lower。假設Python UDF類MyLower在專案test_project的指令碼pyudf_test.py中。

    create function my_lower as 'pyudf_test.MyLower' using 'test_project/resources/pyudf_test.py';
  • 樣本3:建立函數test_udtf。假設Java UDF類com.aliyun.odps.examples.udf.UDTFResource是在udtfexample1.jar中,同時該函數還依賴FILE資源file_resource.txt、Table資源table_resource1以及Archive資源test_archive.zip

    create function test_udtf as 'com.aliyun.odps.examples.udf.UDTFResource' using 'udtfexample1.jar, file_resource.txt, table_resource1, test_archive.zip';

相關命令

  • FUNCTION:如果您不需要把SQL語言定義函數存入MaxCompute的Meta系統,可以使用臨時SQL語言定義函數。臨時SQL語言定義函數只在當前指令碼有效。

  • DELETE FUNCTION:刪除函數。您可以編寫自訂函數並在MaxCompute SQL中使用入口對象的delete_function()方法來刪除函數。

  • DROP FUNCTION:在MaxCompute專案中登出登入的自訂函數。

  • DESC FUNCTION:查看MaxCompute專案中指定自訂函數的資訊,包含函數名稱、所有者、建立時間、類名和資源清單資訊。

  • LIST FUNCTIONS:查看MaxCompute專案中所有自訂函數的資訊。

  • UPDATE FUNCTION:更新函數。您可以編寫自訂函數並在MaxCompute SQL中對函數調用update方法來更新函數。