在Databricks中,如果我有一个作业请求json:
{
"job_id": 1,
"notebook_params": {
"name": "john doe",
"age": "35"
}
}
如何访问作业附加笔记本中的notebook_params ?
在笔记本中,您可以使用dbutils.widgets.get函数通过Widgets访问参数。对于您的示例,它将是:
name = dbutils.widgets.get("name")
age = dbutils.widgets.get("age")
请注意,默认值是字符串,所以如果您需要将age
作为数字,则需要转换它。
另外,如果您想在将输出作为作业之前调试输出,那么您需要使用dbutils.widgets
函数之一声明相应的小部件,否则您将在执行dbutils.widgets.get
时获得小部件未定义的错误。例如,您可以使用允许输入任何文本的dbutils.widgets.text
:
dbutils.widgets.text("name", "<default_name>", "Enter name")
dbutils.widgets.text("name", "<default_age>", "Enter age")
当您想要读取所有参数而不必定义每个参数时,我发现了一个有用的解决方案。
def get_parameters():
all_args = dict(dbutils.notebook.entry_point.getCurrentBindings())
# remove '--' substring
all_args = {key.replace('--', ''): value for key, value in all_args.items()}
# parse values to correct format
all_args = {key: ast.literal_eval(value) for key, value in all_args.items()}
return all_args
请注意,只有当您通过Job运行笔记本时才能获得这些参数。