# 注册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说明](https://support.huaweicloud.com/sdkreference-aidatalake/aidatalake_09_0021.html)。                                                                                                                |
| imports        | 否    | str \| Iterable\[str\] \| None | None             | 打入UDF包的额外文件/目录或URL。                                                                                                                                                                                                                       |
| runtime_env    | 否    | str \| Mapping \| None         | None             | 运行时环境配置；将与 {"pypi": \["py-data-juicer"\]} 合并。 关于runtime_env的更多信息，请参见[runtime_env说明](https://support.huaweicloud.com/sdkreference-aidatalake/aidatalake_09_0022.html)。 |
| 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 小写映射算子",
)
```
![](https://support.huaweicloud.com/sdkreference-aidatalake/public_sys-resources/note_3.0-zh-cn.png)
- 支持Mapper和Filter算子类型。
- Filter算子无需output_columns，传入也会被忽略。
- runtime_env合并规则：用户配置优先，py-data-juicer作为补充依赖自动加入；重复包名按去重策略保留。
 
