更新时间:2026-07-03 GMT+08:00
分享

WITH ARGUMENTS语法

WITH ARGUMENTS语法扩展了现有用户定义函数(UDF)的功能,主要作用是允许用户在UDF运行时设置初始状态。通过这一功能,用户可以:

  • 配置运行时资源和并发度:用户可以指定UDF运行时所需的资源(如内存、CPU等)以及并发执行的实例数量,从而优化性能和资源利用率。
  • 设置类的初始化参数:对于以类(class)形式定义的UDF,用户可以通过WITH ARGUMENTS语法传递初始化构造参数,从而在UDF实例化时设置特定的初始状态。

使用注意事项如下:

  • WITH ARGUMENTS支持几个固定的参数配置,具体的参数信息请参考表1。对于class的初始化参数名称不能与固定参数同名,参数名称是大小写敏感的。
  • 入参列表仅支持常量。
  • 以class形式定义的UDF函数体,用户按需定义class的__init__和__del__成员方法,但必须定义__call__成员方法,该方法为主函数入口。
  • min_concurrency和max_concurrency需要同时设置,设置成功后表示开启自适应并发度。
  • init_concurrency需先开启enable_udf_global_actor_pool,且需同时设置min_concurrency和max_concurrency,否则将报错。
表1 UDF运行时配置列表

参数名

参数描述

默认值

concurrency

UDF的运行并发度,取值范围[1,1024]。

1

min_concurrency

UDF的运行最小并发度,取值范围[1,1024]。

null

max_concurrency

UDF的运行最大并发度,取值范围[1,1024]。

null

init_concurrency

UDF运行时的预热并发度,取值范围[min_concurrency, max_concurrency]。

(min_concurrency + max_concurrency) / 2

timeout

UDF执行的超时时间,取值范围[1,3600],单位为s。

1000

cpu

UDF运行时单个Actor的CPU资源,取值范围为[0.33, 1]之间的分数值、[1, 16]的整数值。

需注意,系统会将输入值四舍五入,保留两位小数。

1

memory

UDF运行时单个Actor的Memory资源,取值范围为[128, 65536],单位为MB,不支持小数。

4096

arch

UDF运行时的物理架构类型,取值为“arm”或“x86”。不同的apu值,arch会有不同的默认值。

  • NPU:默认值为“arm”
  • 其他:默认值为“x86”

apu

指定异构资源的类型和规格,例如"NPU/.+/1"。

null

env_vars

运行时环境变量,dict[str, str]或JSON字符串,参见环境变量设置

null

scheduling_strategy

UDF Actor放置策略,SchedulingStrategy对象、对象列表或JSON字符串,参见UDF Actor放置策略

null

相关文档