更新时间:2024-05-28 GMT+08:00

Doris UDF开发规范

本章节主要介绍开发Doris UDF程序时应遵循的规则和建议。

Doris UDF开发规则

  • UDF中方法调用必须是线程安全的。
  • UDF实现中禁止读取外部大文件到内存中,如果文件过大可能会导致内存耗尽。
  • 需避免大量递归调用,否则容易造成栈溢出或oom。
  • 需避免不断创建对象或数组,否则容易造成内存耗尽。
  • Java UDF应该捕获和处理可能发生的异常,不能将异常给服务处理,以避免程序出现未知异常。可以使用try-catch块来处理异常,并在必要时记录异常信息。
  • UDF中应避免定义静态集合类用于临时数据的存储,或查询外部数据存在较大对象,否则会导致内存占用过高。
  • 应该避免类中import的包和服务侧包冲突,可通过grep -lr "完全限定类名"命令来检查冲突的Jar包。如果发生类名冲突,可通过完全限定类名方式来避免。

Doris UDF开发建议

  • 不要执行大量数据的复制操作,防止堆栈内存溢出。
  • 应避免使用大量字符串拼接操作,否则会导致内存占用过高。
  • Java UDF应该使用有意义的名称,以便其他开发人员能够轻松理解其用途。建议使用驼峰式命名法,并以UDF结尾,例如:MyFunctionUDF。
  • Java UDF应该指定返回值的数据类型,并且必须具有返回值,返回值默认或异常时不要设置为NULL。建议使用基本数据类型或Java类作为返回值类型。