注册Data-Juicer算子
将一个Data-Juicer算子(Filter或Mapper子类实例)注册为标量UDF。内部通过dj_operator_to_aura_udf将算子适配为可调用UDF,再委托给create_udf。
由于cloudpickle对Data-Juicer算子类采用按引用序列化,SDK会自动将py-data-juicer加入runtime_env.pypi,确保Aura运行时已安装该包;用户自定义的runtime_env优先级高于自动注入项。
前提条件
已安装data_juicer包(本地用于构造算子实例)。
函数签名
client.create_datajuicer_operator(
operator, /, *,
name,
input_columns,
output_columns=None,
database=None,
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 参数说明
| 参数 | 是否必选 | 类型 | 默认值 | 说明 |
|---|---|---|---|---|
| operator | 是 | Any(位置参数) | - | 已初始化的 Data-Juicer 算子实例(Filter或Mapper子类)。 |
| name | 是 | str | - | 注册到LakeFormation的函数名。 |
| input_columns | 是 | list[str] | - | 算子期望的输入列名,顺序与引擎传入的位置参数对齐。 |
| output_columns | 否 | list[str] | None | None | 算子产出的列名;Mapper操作必需,Filter操作忽略。 |
| database | 否 | str | None | default_database | 目标数据库名。 |
| signature | 否 | Signature | None | None | 显式函数签名。关于signature的更多信息,请参见signature说明。 |
| imports | 否 | str | Iterable[str] | None | None | 打入UDF包的额外文件/目录或URL。 |
| runtime_env | 否 | str | Mapping | None | None | 运行时环境配置;将与 {"pypi": ["py-data-juicer"]} 合并。 关于runtime_env的更多信息,请参见runtime_env说明。 |
| description | 否 | str | None | None | 函数描述。 |
| pretty_name | 否 | str | None | None | 展示名。 |
| is_strict | 否 | bool | True | 是否严格。 |
| volatility | 否 | str | “VOLATILE” | 函数易变性。 |
| is_batch | 否 | bool | False | 是否批量处理。 |
| batch_size | 否 | int | None | None | 批量大小。 |
| 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 | 设备类型。 |
| devices | 否 | float | None | None | 设备数量。 |
返回值
返回Function对象(实际由create_udf返回)。
异常说明
| 异常 | 触发条件 |
|---|---|
| ValueError | operator 为 Mapper 但未提供 output_columns。 |
| ImportError | 未安装 data_juicer 包。 |
示例代码
from data_juicer.ops.mapper import LowercaseMapper
op = LowercaseMapper(text_column="content")
func = client.create_datajuicer_operator(
operator=op,
name="dj_lowercase",
input_columns=["content"],
output_columns=["content"], # Mapper 必填
description="Data-Juicer 小写映射算子",
)
- 支持Mapper和Filter算子类型。
- Filter算子无需output_columns,传入也会被忽略。
- runtime_env合并规则:用户配置优先,py-data-juicer作为补充依赖自动加入;重复包名按去重策略保留。