创建UDTF
将一个表函数(UDTF)注册到LakeFormation。表函数可接收输入并返回多行多列结果。
前提条件
- 已完成SDK安装。具体操作,请参见Catalog SDK获取与安装。
- 已准备好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}")