| Package | Description |
|---|---|
| com.aliyun.odps.udf |
UDF API
主要包括
UDF(User Defined Function,用户自定义函数)
和 UDTF (User Defined Table-generating Function,用户自定义生成表函数) |
| Modifier and Type | Class and Description |
|---|---|
class |
Aggregator
继承
Aggregator 实现 UDAF。UDAF (User Defined Aggregation Function) :用户自定义聚合函数,其输入输出是多对一的关系,即将多条输入记录聚合成一条输出值。 可以与 SQL 中的 Group By 语句联用。 实现 Java UDAF 类需要继承 Aggregator 类。 Aggregator 流程主要分为四部分,分别对应四个主要接口: Aggregator.newBuffer() 聚合中间值 buffer 的创建和初始化。
Aggregator.iterate(Writable, Writable[]) 实现此方法对输入数据进行计算,聚合到中间值 buffer。其中第一个参数是 newBuffer() 产生的结果,第二个参数是数据源。
Aggregator.merge(Writable, Writable) 实现此方法将两个中间值 merge 聚合到一起。其中第一个参数是 newBuffer() 产生的结果,第二个参数是 iterate 操作完成后产生的中间结果。
Aggregator.terminate(Writable) 实现此方法将 merge 操作完成后产生的中间结果转换为 ODPS SQL 基本类型。
初始化流程在 Aggregator.setup(ExecutionContext)调用中完成,用户可重写此方法来实现一次性初始操作,例如共享资源的读取等。
聚合过程的中间数据 buffer 类继承于 Writable, 除内建类型外,用户可继承 Writable 类实现自定义类。buffer 大小不应该随数据量递增,最好不要超过 2MB,否则会造成内存占用过大。 |
class |
StandaloneUDTF
具有拉数据功能的UDTF,可以主动调用getNextRow()获取一条记录。
仅在LOT中才能使用,并且有如下限制:
1.
|
class |
UDF
UDF 基类
UDF (User Defined Scalar Function) 自定义函数,其输入输出是一对一的关系,即读入一行数据,写出一条输出值。
|
class |
UDTF
UDTF 是 User Defined Table-generating Function 缩写,用来解决一次函数调用输出多行数据的场景,也是唯一能返回多个字段的自定义函数。 |
Copyright © 2023 Alibaba Cloud Computing. All rights reserved.