更新时间:2026-10-16 GMT+08:00
分享

开发注意事项

运行环境约束

  • UDF编程语言仅支持Python。
  • UDF运行时环境的Python版本支持3.10和3.11系列,建议使用3.11.9版本。
  • 使用CLOUDPICKLE序列化主函数时,确保本地Python版本为3.11.9且cloudpickle版本为 3.0.0,以避免Aura运行环境里因版本不一致导致函数体解析失败。

函数定义约束

  • UDF 的参数不支持设置默认值;如果创建函数时参数或返回值带有精度,不进行精度检测。
  • 不支持函数重载。

函数与代码包要求

  • 函数体和代码包归档路径,两者必须定义一个。
  • 当业务场景比较复杂、UDF所涉及的代码较多时,推荐以文件压缩包形式注册函数:将UDF依赖的所有相关代码文件统一归档到一个压缩包,上传至OBS后,在创建函数时指定压缩包的存储路径。压缩包要求如下:
    • 必须包含文件 {FUNCTION_NAME}_source.py,该文件被视为函数的主入口文件,且内容需使用CLOUDPICKLE序列化为十六进制。
    • 主函数需要import的模块所属的代码文件,需要正确组织结构。
    • 压缩包格式仅支持zip。

      压缩包示例如下:

      my_udf.zip/
      ├── my_udf_source.py
      ├── my_helper.py
      └── other/
              └── utils.py

注册方式的建议

Aura提供了三种注册UDF的方式:ibis-aura SDK显式注册、隐式注册以及SQL的DDL注册,推荐用户使用ibis-aura SDK显式注册,该方式有以下两个优势:
  • SDK提供的注册接口已完全遵守Aura DDL的使用规范,只要正确调用接口即可,能避免违反约束规范而导致UDF不能正常使用的问题。
  • SDK提供了更多的约束检查,例如Python版本的检测,自动整理UDF代码包等。

依赖管理

  • Python UDF 的三方依赖包列表需要保证lib间的兼容性,并建议所有依赖包指定稳定的版本。
  • 在本地调试UDF时,建议使用华为源所提供的三方包搭建调试环境,以避免UDF代码在本地环境可运行,而在Aura里运行时出现版本无法安装、版本不兼容等问题。

存储与权限

用户只能使用OBS并行文件系统的桶,来存储UDF代码压缩包,且需要在LakeFormation上赋予IAM用户读的权限。

相关文档