flink的UDF分类
flink分如下三类UDF,每个类别都有自己独特的用处
ScalarFunction:
是指返回一个值的函数标。量函数是实现将0,1,或者多个标量值转化为一个新值
TableFunction :
与标量函数相似之处是输入可以0,1或者多个参数,不同之处可以输出任意数目的行数。返回的行也可以包含一个或者多个列。
聚合函数:
用户自定义聚合函数聚合一张表(一行或者多行,一行有一个或者多个属性)为一个标量的值
例如定义了一个
定义一个ScalarFunction
public class HashCode extends ScalarFunction {
private int factor = 12;
public HashCode(int factor) {
this.factor = factor;
}
public int eval(String s) {
return s.hashCode() * factor;
}
}上面打包后,引入项目,然后直接使用代码即可
如何使用参考下面:
BatchTableEnvironment tableEnv = TableEnvironment.getTableEnvironment(env);
// 注册HashCode
tableEnv.registerFunction("hashCode", new HashCode(10));
// 使用HashCode 在Java api
myTable.select("string, string.hashCode(), hashCode(string)");
// 使用HASHCODE在 SQL API
tableEnv.sqlQuery("SELECT string, HASHCODE(string) FROM MyTable");
tableEnv.sqlQuery("SELECT string, HASHCODE(string) FROM MyTable");
|