全部产品
Search
文档中心

实时计算Flink版:管理自定义函数(UDF)

更新时间:Jan 02, 2024

在SQL作业中使用自定义函数,需要先注册自定义函数(UDF)。本文为您介绍如何注册、更新和删除自定义函数。

注意事项

  • 当RAM用户或RAM角色等其他身份需要进行管理自定义函数(UDF)等相关操作时,请确保其具有目标项目空间的访问权限,详情请参见项目空间授权

  • 为了避免JAR包依赖冲突,在开发自定义函数时您需要注意以下几点:

    • 作业开发页面选择的Flink版本,请和Pom依赖中的Flink版本保持一致。

    • Flink相关依赖,scope请使用provided,即在依赖中添加<scope>provided</scope>

    • 其他第三方依赖请采用Shade方式打包,Shade打包详情请参见Apache Maven Shade Plugin

    说明

    Flink依赖冲突问题,详情请参见如何解决Flink依赖冲突问题?

注册UDF

全局自定义函数

  1. 进入自定义函数注册入口

    1. 登录实时计算控制台

    2. 单击目标工作空间操作列下的控制台

    3. 单击SQL开发

    4. 单击左侧的函数页签。

  2. 单击注册UDF

  3. 上传UDF JAR文件。注册UDF

    您可以通过以下任何一种方式上传UDF JAR文件:

    • 上传文件:单击选择文件项右侧的选择文件后,选择您的目标UDF Artifact文件。如果有依赖文件,单击依赖文件项右侧的选择文件,选择您的目标UDF Artifact所依赖的文件。

      说明
      • 您的UDF文件会被上传到您选择的OSS Bucket中的sql-artifacts目录下。

      • 对于Java类型的UDF,其依赖可以打包到UDF JAR包中,也可以通过依赖文件项进行上传;对于Python类型的UDF,其依赖推荐通过的单独上传依赖文件方式上传。

    • 外部URL:当UDF文件超过200 MB或者需要使用其他服务上存在的UDF文件时,可以使用外部URL功能获取UDF文件。

      说明
      • 当您UDF文件超过200 MB,可以将UDF文件放在实时计算Flink版绑定的OSS Bucket的sql-artifacts/namespaces/{namespace}目录下,再使用该文件的HTTPS路径即可。

      • 在使用其他服务的HTTP路径时,需要该服务和实时计算Flink版在同一VPC下或者先打通实时计算Flink版和目标服务的公网网络后,使用公网地址,详情请参见Flink全托管集群如何访问公网?

  4. 单击确定

  5. 可用函数页面,选择需要注册的UDF后,单击创建函数

    Flink开发控制台会解析自定义函数文件中是否使用了Flink UDF、UDAF和UDTF接口的类,并自动提取类名,填充到Function Name字段中。注册成功后,您可以在左侧函数列表看到所有注册成功的UDF,注册成功的UDF左侧会有黄色字体的fx标识。

    image.png

    说明

    全局自定义函数(Catalog Function)在注册时,默认使用最新的Flink版本解析。如果您在作业中使用全局自定义函数,同时在作业中选中了非最新的Flink版本,则有可能出现不兼容的问题。此时,您可以根据作业需要使用的引擎版本来实现UDF代码,并通过作业级自定义函数的方式解决此问题。详情请参见作业级自定义函数

作业级自定义函数

重要
  • 仅VVR 8.0.3及以上版本支持注册作业级Python自定义函数。

  • 当使用作业级Python自定义函数时,可以在作业运行参数配置中,通过python.files或者python.archieves等参数配置相关依赖文件。

  • 当使用作业级Python自定义函数时,不支持深度检查,需要在作业部署时,跳过深度检查。

作业级自定义函数的注册流程如下:

  1. 上传自定义函数JAR或Python包。

    在左侧导航栏资源管理中,上传自定义函数JAR或Python包。

  2. 在作业中指定作业级自定义函数。

    在作业的附加依赖文件中,指定自定义函数JAR或Python包。

  3. 注册作业级自定义函数。

    • JAVA自定义函数

      CREATE TEMPORARY FUNCTION yourfunctionname;
    • Python自定义函数

      CREATE TEMPORARY FUNCTION yourfunctionname LANGUAGE Python;

更新UDF

如果您的UDF JAR文件中,新增了UDF或已注册了UDF的代码变更,您可以按照以下步骤更新UDF JAR文件。

  1. 进入自定义函数注册入口

    1. 登录实时计算控制台

    2. 单击目标工作空间操作列下的控制台

    3. 单击SQL开发

    4. 单击左侧的函数页签。

  2. 函数列表中,鼠标悬停在目标UDF名称上,单击更新JAR

  3. 上传UDF JAR文件。更新JAR

    重要
    • 您上传的新UDF JAR文件中,必须包含当前已经注册UDF的所有类,不能出现某个已注册UDF的类消失的情况。

    • 只有重启作业或提交新作业时,才会使用新UDF JAR文件中的代码。如果引用该UDF JAR的作业正在运行,则依然会使用旧UDF JAR文件。

  4. 单击修改

删除UDF

说明

在删除UDF JAR文件前,请确定其注册的UDF没有被作业或SQL文件引用。

如果您的UDF JAR文件不再使用,您可以按照以下步骤删除UDF。

  1. 进入自定义函数注册入口

    1. 登录实时计算控制台

    2. 单击目标工作空间操作列下的控制台

    3. 单击SQL开发

    4. 单击左侧的函数页签。

  2. 函数列表中,鼠标悬停在目标UDF名称上,单击删除JAR图标。

  3. 选中删除以上所有函数并且删除关联的文件

    如果您要删除该UDF JAR文件,则需要删除该UDF JAR中所有注册的UDF,避免有脏数据残留。

  4. 单击确定

相关文档