管理自定义函数(UDF)

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

注意事项

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

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

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

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

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

    说明

    Flink依赖冲突问题,详情请参见控制台操作

注册UDF

全局自定义函数

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

    1. 登录实时计算控制台

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

    3. 单击数据开发 > ETL

    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文件时,可以使用外部URL功能获取UDF文件。

      说明

      仅支持以下两类外部URL:

      • 开通Flink工作空间时选择的OSS Bucket地址。您可以在实时计算管理控制台目标工作空间详情中查看绑定的OSS Bucket。

      • 实时计算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.archives等参数配置相关依赖文件。

  • 当使用作业级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. 单击数据开发 > ETL

    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. 单击数据开发 > ETL

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

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

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

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

  4. 单击确定

相关文档