本文將為您介紹如何通過用戶端使用常用命令對函數進行操作。

您如果想對函數進行操作,既可以通過用戶端使用常用命令進行相關操作,也可以通過DataWorks中可視化的線上資料開發工具對資源進行建立、搜尋等操作,詳情請參見 檔案目錄中的函數管理模組。

註冊函數

命令格式如下:
CREATE FUNCTION <function_name> AS <package_to_class> USING <resource_list>;
參數說明:
  • function_name:UDF函數名,這個名字就是SQL中引用該函數所使用的名字。
  • package_to_class:如果是Java UDF,這個名字就是從頂層包名一直到實現UDF類名的fully qualified class name;如果是python UDF,這個名字就是python指令碼名.類名。這個名字必須使用引號。
  • resource_list:UDF所用到的資源清單。
    • 此資源清單必須包括UDF代碼所在的資源。
    • 如果您的代碼中通過distributed cache介面讀取資源檔,此列表中還要包括UDF所讀取的資源檔列表。
    • 資源清單由多個資源名組成,資源名之間由逗號分隔,且資源清單必須用引號引起來。
    • 如果需要指定資源所在的project,寫法為<project_name>/resources/<resource_name>
樣本如下:
  • 假設Java UDF類org.alidata.odps.udf.examples.Lower在my_lower.jar中,建立函數my_lower。如下所示:
    CREATE FUNCTION my_lower AS 'org.alidata.odps.udf.examples.Lower' USING 'my_lower.jar';
  • 假設Python UDF MyLower在項目空間test_project的指令碼pyudf_test.py中,建立函數my_lower。如下所示:
    create function my_lower as 'pyudf_test.MyLower' using 'test_project/resources/pyudf_test.py';
  • 假設Java UDF類com.aliyun.odps.examples.udf.UDTFResource是在udtfexample1.jar中,同時該函數還依賴file資源file_resource.txt,table資源table_resource1,以及Archive資源test_archive.zip,建立函數 test_udtf。如下所示:
    create function test_udtf as 'com.aliyun.odps.examples.udf.UDTFResource' using 'udtfexample1.jar, file_resource.txt, table_resource1,test_archive.zip';
说明
  • 與資源檔一樣,同名函數只能註冊一次。
  • 一般情況下,您的自建函數無法覆蓋系統內建函數。只有項目空間的Owner才有權利覆蓋內建函數。如果您使用了覆蓋內建函數的自訂函數,在SQL執行結束後,會在Summary中列印出warning資訊。

登出函數

命令格式如下:
DROP FUNCTION <function_name>;
樣本如下:
DROP FUNCTION test_lower;

查看函數清單

命令格式如下:
LIST FUNCTIONS;     --查看當前項目空間中的所有的自訂函數
LIST FUNCTIONS -p my_project;      --查看指定項目空間 my_project 下的所有自訂函數