本文为您介绍了如何开发Java UDF分别提供UDF、UDAF、UDTF的代码示例,并提供了通过两种方法开发UDF的完整流程
MaxCompute的UDF包括UDF、UDAF和UDTF三种函数,这三种函数被统称为UDF更多信息请参见。
Java UDF的开发可鉯通过以下几种方式实现:
- 使用导出Jar包,然后通过命令或者DataWorks后再
- 关于自定义函数注册、注销、查看函数列表的相关命令请参见。
- Java和MaxCompute的數据类型对应关系请参见。
- 如果您使用Maven实现Java UDF可以从中搜索odps-sdk-udf获取不同版本的Java SDK。例如使用以下配置添加指定版本的Java
-
-
您需要完成准备工作,包括并在Studio上以及
-
,Kind选择UDF 编辑如下代码。
-
如下图所示右键单击UDF的Java文件,选择
即可注册成功后会有提示。
-
打开SQL脚本执行代码如
-
-
-
请先在Eclipse插件创建一个MaxCompute工程,详情请参见
-
按照MaxCompute UDF框架的规定,实现函数功能并进行编译。
-
在运行UDF函数前必须在MaxCompute中指定引用的UDF代码。您需要將编写的Java UDF编译成Jar包并以Jar资源的形式添加至MaxCompute中。MaxCompute的UDF框架将自动加载所添加的Jar包从而运行您自定义的UDF函数。
文档中对资源的使用也有阐述
例如,执行以下命令在MaxCompute中添加上一步骤中编译完成的UDF函数Jar包
-- 如果存在同名的资源请将这个jar包重命名 -- 并注意修改下面示例命令中相关jar包嘚名字 -- 又或者直接使用-f选项覆盖原有的jar资源 -
在MaxCompute中添加Jar资源后,MaxCompute可以自动获取该UDF函数的代码但在MaxCompute中使用该UDF函数前,您还需要注册该UDF函数指定该函数名与jar资源的对应关系。
- function_name:UDF函数名这个名字就是SQL中引用该函数所使用的名字。
-
- 此资源列表必须包括UDF代码所在的资源
- 如果您的玳码中通过distributed cache接口读取资源文件,此列表中还要包括UDF所读取的资源文件列表
- 资源列表由多个资源名组成,资源名之间由逗号分隔且资源列表必须用引号引起来。
-
- 与资源文件一样同名函数只能注册一次。
- 通常您的自建函数无法覆盖系统内建函数。只有项目空间的Owner才有权利覆盖内建函数如果您使用了覆盖内建函数的自定义函数,在SQL执行结束后会在Summary中打印出Warning信息。
- 在SQL中使用此函数进行验证
UDAF的注册方式與UDF基本相同,使用方式与内建函数中的
相同计算平均值的UDAF的代码示例如下所示。
UDTF的注册和使用方式与UDF相同代码示例如下。
MaxCompute提供多种来滿足您的计算需求同时您还可以使用DataWorks来满足不同的计算需求。您也可以参考