在这里function的话,其实就是我们使用的UDF,UDTF,UDAF等函数。有时候在一些特定的场景里面,我们需要在查询的时候做某些数据类的操作,但是flink这样的table sql里面没有相关的函数可用,所以这里我们就可以自定一些函数来用,这里自定义的函数就是UDF、UDAF、UDTF、UDAGG、UDTAGG函数。
在flink table sql里面,create function的基础语法是:
CREATE [TEMPORARY|TEMPORARY SYSTEM] FUNCTION [IF NOT EXISTS] [[catalog_name.]db_name.]function_name AS identifier [LANGUAGE JAVA|SCALA|PYTHON] [USING JAR '<path_to_filename>.jar' [, JAR '<path_to_filename>.jar']* ]
关于创建function基础语法里面的语法说明如下:
1)TEMPORARY
创建一个有 catalog 和数据库命名空间的临时 catalog function ,并覆盖原有的 catalog function 。
2)TEMPORARY SYSTEM
创建一个没有数据库命名空间的临时系统 catalog function ,并覆盖系统内置的函数。
3)IF NOT EXISTS
若该函数已经存在,则不会进行任何操作。
4)LANGUAGE JAVA|SCALA|PYTHON
Language tag 用于指定 Flink runtime 如何执行这个函数。目前,只支持 JAVA, SCALA 和 PYTHON,且函数的默认语言为 JAVA。
5)USING
指定包含该函数的实现及其依赖的 jar 资源列表。该 jar 应该位于 Flink 当前支持的本地或远程文件系统 中,比如 hdfs/s3/oss。
注意 目前只有 JAVA、SCALA 语言支持 USING 子句。
补充说明
1、在使用自定义函数的时候,我们可以直接类似这样的方式使用
select ${自定义函数function}(${字段}) from ${table}
还没有评论,来说两句吧...