全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
MaxCompute

UDF概述

更新时间:2017-11-07 16:13:56

UDF 全称为 User Defined Function,即用户自定义函数。MaxCompute 提供很多内建函数来满足您的计算需求,同时您还可以通过创建自定义函数来满足不同的计算需求。UDF 在使用上与普通的 内建函数 类似,Java 和 MaxCompute 的数据类型的对应关系,请参见 参数与返回值类型

如果您使用 Maven,可以从 Maven 库 中搜索 odps-sdk-udf,从而获取不同版本的 Java SDK,相关配置信息如下所示:

  1. <dependency>
  2. <groupId>com.aliyun.odps</groupId>
  3. <artifactId>odps-sdk-udf</artifactId>
  4. <version>0.20.7-public</version>
  5. </dependency>

在 MaxCompute 中,您可以扩展的 UDF 有两种:

UDF 分类 描述
User Defined Scalar Function(通常也称之为 UDF) 用户自定义标量值函数(User Defined Scalar Function)。其输入与输出是一对一的关系,即读入一行数据,写出一条输出值 。
UDTF(User Defined Table Valued Function) 自定义表值函数,是用来解决一次函数调用输出多行数据场景的,也是唯一能返回多个字段的自定义函数。而 UDF 只能一次计算输出一条返回值。
UDAF(User Defined Aggregation Function) 自定义聚合函数,其输入与输出是多对一的关系, 即将多条输入记录聚合成一条输出值。可以与 SQL 中的 Group By 语句联用。具体语法请参见 聚合函数

注意:

  • UDF 广义的说法代表了自定义标量函数,自定义聚合函数及自定义表函数三种类型的自定义函数的集合。狭义来说,仅代表用户自定义标量函数。文档会经常使用这一名词,请读者根据文档上下文判断具体含义 。
  • SQL 语句中有使用自定义的函数,提示内存不够。请配置 set odps.sql.udf.joiner.jvm.memory=xxxx;原因是数据量太大并且有倾斜,任务超出默认设置的内存。

MaxCompute的UDF支持跨项目分享,即在project_a中可以使用project_b的UDF。具体的授权可以参考安全指南的授权文档中的‘跨项目空间Table、Resource、Function分享示例’,使用时写法如select other_project:udf_in_other_project(arg0, arg1) as res from table_t;

UDF 示例

UDF 的相关示例请参见 UDF 示例

本文导读目录