我们如何在附加的笔记本中访问databricks作业参数?



在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运行笔记本时才能获得这些参数。

最新更新