首页 实时计算Flink版 操作指南 作业开发 管理自定义函数(UDF)

管理自定义函数(UDF)

更新时间: 2023-07-27 15:18:55

本文为您介绍如何管理Flink全托管自定义函数(UDF),包括注册、更新和删除。

前提条件

其他阿里云账号或RAM用户共同使用Flink全托管产品时,需要为阿里云账号或RAM用户授权,以进行管理自定义函数(UDF)等相关操作,详情请参见作业操作账号授权

注意事项

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

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

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

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

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

注册UDF

如果您的SQL需要使用UDF,您需要先注册您的UDF,才能在SQL中使用。

  1. 登录实时计算控制台

  2. Flink全托管页签,单击目标工作空间操作列下的控制台

  3. 单击SQL开发

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

  5. 单击注册UDF

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

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

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

      说明
      • 您的UDF JAR文件会被上传到您选择的OSS Bucket中的sql-artifacts目录下。此外,Flink开发控制台会解析您UDF JAR文件中是否使用了Flink UDF、UDAF和UDTF接口的类,并自动提取类名,填充到Function Name字段中。

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

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

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

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

  7. 单击确定

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

    在SQL编辑器页面左侧函数列表,您可以看到所有注册成功的UDF。

更新UDF

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

  1. 登录实时计算控制台

  2. Flink全托管页签,单击目标工作空间操作列下的控制台

  3. 单击SQL开发

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

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

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

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

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

    • 外部URL:输入外部URL地址。

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

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

  7. 单击修改

删除UDF

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

  1. 登录实时计算控制台

  2. Flink全托管页签,单击目标工作空间操作列下的控制台

  3. 单击SQL开发

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

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

    说明

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

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

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

  7. 单击确定

阿里云首页 实时计算Flink版 相关技术圈