CREATE FUNCTION

在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方法来更新函数。