分享

flink sql 怎么添加自定义udf的jar

chenyui 2019-6-8 12:31:18 发表于 疑问解答 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 4 12554
今天刚学到这,看视频有一个SQL语句中使用了自定义的function,但是没有讲解怎么添加jar到flink sql客户端。

已有(4)人评论

跳转到指定楼层
s060403072 发表于 2019-6-9 09:18:00
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");




回复

使用道具 举报

chenyui 发表于 2019-6-10 15:04:40
s060403072 发表于 2019-6-9 09:18
flink的UDF分类
flink分如下三类UDF,每个类别都有自己独特的用处

多谢了。我还想知道把jar包加入项目或者命令行的步骤。
flink的udf是和hive的udf加包方式一样吗
add jar /path;
create temporary function 'temp' 'cn.Test';
这样的吗
回复

使用道具 举报

s060403072 发表于 2019-6-10 18:57:47
chenyui 发表于 2019-6-10 15:04
多谢了。我还想知道把jar包加入项目或者命令行的步骤。
flink的udf是和hive的udf加包方式一样吗
add ja ...

能引用到这个包即可。也就是说无论你添加到哪里,先把这个包添加到环境中来,import,然后直接使用即可。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条