runtime_env说明
runtime_env用于声明UDF运行所需的运行时环境,包括 Python 版本、PyPI 依赖包、环境变量等。该配置会序列化为JSON字符串存入LakeFormation的parameters.runtime_env字段,UDF在Aura引擎运行时按此配置准备环境。
作用
- 保证可执行:UDF依赖的第三方包、Python版本在引擎侧按声明安装,避免"本地能跑、远端报错"。
- 版本可控:支持固定Python版本(3.10/3.11)与指定包版本,保证运行环境一致。
- 跨端同步:环境配置随函数元数据持久化,与函数生命周期绑定。
什么情况下使用
| 场景 | 用法 |
|---|---|
| UDF 依赖第三方 Python 包 | 在pypi/pip中声明包名(如 ["numpy"])。 |
| 需指定 Python 版本 | 设置 python_version(仅支持3.11或3.10)。 |
| 需注入运行环境变量 | 设置env_vars。 |
| 无特殊依赖 | 传None即可,SDK构造默认环境(python_version=3.11)。 |
构造方式
runtime_env接受以下三种形式,SDK内部统一构造为RuntimeEnv对象:
| 传入形式 | 示例 | 说明 |
|---|---|---|
| JSON字符串 | '{"python_version": "3.11", "pypi": ["numpy"]}' | 经json.loads解析。 |
| Mapping/dict | {"python_version": "3.11", "pypi": ["numpy"]} | 直接更新到内部数据结构。 |
| None | - | 构造默认RuntimeEnv,python_version设置为3.11。 |
常见键
| 键 | 类型 | 说明 |
|---|---|---|
| python_version | str | Python版本,仅支持3.11(默认)或3.10;传入其他版本会抛出ValueError。 |
| pypi/pip | list[str] | PyPI依赖包列表;合并时按包名去重。 |
| env_vars | dict | 运行时环境变量。 |
默认值与校验行为
- 当runtime_env为None时,SDK构造空RuntimeEnv,并自动将python_version设为3.11。
- 若runtime_env提供了python_version,SDK校验其取值;非3.11/3.10时抛出ValueError。
- RuntimeEnv是类字典的可变映射(MutableMapping),支持to_dict()、to_json()、merge(other) 方法。merge采用深合并策略:dict递归合并、list去重合并(pypi/pip/dependencies 键按包名去重)、标量冲突时左值优先。
返回值
返回Function对象,其中包含LakeFormation分配的version_id、resource_uris(OBS 包地址)及parameters(签名、运行时环境等元数据)。