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

创建UDTF

将一个表函数(UDTF)注册到LakeFormation。表函数可接收输入并返回多行多列结果。

前提条件

  • 已准备好UDF可调用对象(函数、函数类或类实例),并标注了类型注解。
  • 已开通OBS与LakeFormation服务,并获取对应endpoint、实例 ID、项目ID等。

函数签名

client.create_udtf(
    udtf, /, *,
    database=None,
    name,
    signature=None,
    imports=None,
    runtime_env=None,
    description=None,
    pretty_name=None,
    is_strict=True,
    volatility="VOLATILE",
    is_batch=False,
    batch_size=None,
    cpu_arch=None,
    cpus=None,
    memory=None,
    device_type=None,
    devices=None,
) -> Function

参数说明

参数

是否必选

类型

默认值

说明

udtf

是

Any(位置参数)

-

UDTF 可调用对象(函数或可调用类)。

database

否

str | None

default_database

目标数据库名;为None时使用客户端默认数据库。

name

是

str

-

函数名,须以字母开头,仅含字母/数字/下划线,长度 3–128。

signature

否

Signature | None

None

显式函数签名;为None时由UDF注解自动推断。

关于signature的更多信息,请参见signature说明。

imports

否

str | Iterable[str] | None

None

需要打入UDF包的文件/目录路径或URL列表。

runtime_env

否

str | Mapping | None

None

运行时环境配置(python_version、pypi 依赖等),可传JSON字符串或字典。

关于runtime_env的更多信息,请参见runtime_env说明。

description

否

str | None

None

函数描述。

pretty_name

否

str | None

None

展示名;为None时使用name。

is_strict

否

bool

True

函数是否严格(输入为NULL时是否直接返回NULL)。

volatility

否

str

“VOLATILE”

函数易变性:IMMUTABLE/STABLE/VOLATILE。

is_batch

否

bool

False

是否启用批量处理模式。

batch_size

否

int | None

None

批量处理每批大小;is_batch=True 时建议提供,须为正整数。

cpu_arch

否

str | None

None

CPU架构,取值arm或x86。

cpus

否

float | None

None

CPU核数,最小0.33。

memory

否

int | None

None

内存大小,单位MB,最小1。

device_type

否

str | None

None

设备类型,例如npu、gpu。

devices

否

float | None

None

设备数量,需为正数。

返回值

返回Function对象。

示例代码

import pyarrow as pa

def split_range(start: int, end: int) -> pa.Table:
    return pa.table({"v": list(range(start, end))})

func = client.create_udtf(
    udf=split_range,
    name="split_range",
    description="生成 [start, end) 区间整数表",
)
print(f"UDTF registered: {func.function_name}")

相关文档