下面我们将给出一个完整的开发 UDF 流程示例,例如,实现一个字符小写转换功能的 UDF,需要经过以下几个步骤:
- 代码编写:按照 MaxCompute UDF 框架的规定,实现函数功能,并进行编译 。下面给出一个简单的代码实现:
package org.alidata.odps.udf.examples;
import com.aliyun.odps.udf.UDF;
public final class Lower extends UDF{
public String evaluate(String s){
if(s==null){
return s.toLowerCase();
}
}
}
将这个 jar 包命名为“my_lower.jar”。
添加资源:在运行 UDF 之前,必须指定引用的 UDF 代码 。用户代码通过资源的形式添加到 MaxCompute 中 。Java UDF 必须被打成 jar 包,以 jar 资源添加到 MaxCompute 中,UDF 框架会自动加载 jar 包,运行用户自定义的 UDF 。
add jar my_lower.jar;
- 注册 UDF 函数:用户的 jar 包被上传后,使得 MaxCompute 有条件自动获取用户代码并运行 。但此时仍然无法使用这个 UDF,因为 MaxCompute 中并没有关于这个 UDF 的任何信息 。因此需要用户在 MaxCompute 中注册一个唯一的函数名,并指定这个函数名与哪个 jar 资源的哪个函数对应 。
CREATE FUNCTION test_lower AS org.alidata.odps.udf.examples.Lower USING my_lower.jar;
在sql中使用此函数:
select test_lower('A') from my_test_table;