如何在外部Notebook中按顺序传参调用Databricks Notebook(不指定参数名)
解决方案:按位置参数风格调用Databricks Notebook
首先明确:dbutils.notebook.run的第三个参数必须是字典类型(Dict[str, str]),要求键值对形式传递参数,你写的{"param1_value", "param2_value"}是集合,类型不匹配,所以无法运行。
如果想按参数顺序传递、不想指定参数名,可以用以下两种方式实现:
方式1:主Notebook封装参数配对
提前维护参数名的顺序列表,将位置参数值与参数名自动配对成字典:
# 主Notebook main_notebook 中的代码 param_values = ["param1_value", "param2_value"] # 按顺序传值 param_names = ["param1", "param2"] # 对应notebook1的参数名顺序 params = dict(zip(param_names, param_values)) dbutils.notebook.run("/path/to/notebook1", 60, params)
这样后续只需修改param_values的内容,不用重复写参数名,保持位置传参的简洁性。
方式2:被调用Notebook适配位置参数格式
在主Notebook中把参数值打包成列表(转成字符串传递),被调用的notebook1读取后解析为位置参数:
主Notebook代码:
import json # 按顺序传递参数值,打包为JSON字符串 args_json = json.dumps(["param1_value", "param2_value"]) dbutils.notebook.run("/path/to/notebook1", 60, {"args": args_json})
被调用Notebook(notebook1)代码:
import json # 读取并解析参数列表 args = json.loads(dbutils.widgets.get("args")) param1 = args[0] param2 = args[1] # 后续业务逻辑使用param1和param2
内容的提问来源于stack exchange,提问作者Beso
相关产品推荐
相关产品推荐

