用户定义函数UDF

简介: UDF

UDF简介

UDF(user defined scalar function)

用户自定义标量函数用于对传递给它的一个或者多个参数值进行处理和计算并返回一个单一的值。
函数输入和输出是一对一的
返回一个确定类型的标量值
可以在where过滤条件中
select myudf_low(name) FROM t_test;
select * from t_test where myudf_lower(name)='odps';
select * from t_test where myudf_lower(myudf_lower(name))='odps';

UDTF(user defined table valued function)

用户自定义表值函数:解决一次函数调用输出多行多列数据场景;唯一能返回多个字段的用户自定义函数;不支持在同一个select字句中与group by,distribute by/sort by联用。
函数输入和输出是一对多的
同一个select字句不允许有其他表达式
不能嵌套使用
select myudf_vertical(name,score) as (name,score) from t_udtf;

UDAF(user defined aggregation function)

用户自定义聚合函数:将多条输入记录聚合成一条输出值后输出。
输入与输出是多对一关系
可以与SQL中的group by语句联用
select AggrAvg(score) from t_udaf;
select name,AggrAvg(score) from t_udtf group by name;

Java UDF支持的数据类型

UDF实现逻辑

UDF实现逻辑

UDTF实现逻辑

UDAF实现逻辑

实现UDF需要继承com.aliyun.odps.udf.Aggregator类
需要实现setup,newBuffer,iterate,terminate,merge,close等接口
用户实现自定义的writable buffer

UDAF实现平均值

UDF开发流程

JavaUDF的开发流程

配置Java+eclipse的环境
新建项目
新增UDF类
添加逻辑处理
准备本地测试数据
编译调试
导出Jar包
发布

目录
相关文章
|
6月前
|
算法 编译器 C语言
函数—C(下)
函数—C(下)
58 0
|
5月前
|
算法 程序员 编译器
函数(2)
函数(2)
23 0
|
存储 资源调度 搜索推荐
一个用户一个函数和多人一个函数
一个用户一个函数和多人一个函数
66 1
|
存储 编译器 C语言
C语言知识点之 函数
C语言知识点之 函数
56 0
|
程序员 C语言
函数(1)
函数(1)
|
编译器 C语言 C++
C++——函数
C++——函数
118 0
C++——函数
【学习笔记之我要C】函数的参数与调用
【学习笔记之我要C】函数的参数与调用
156 0
|
程序员 C语言
memsrt函数的使用及说明
memsrt函数的使用及说明
120 0
memsrt函数的使用及说明
函数加强
在我们日常开发中,如果要遍历一个文件夹下的所有文件,通常使用递归来实现;