您如何在Databricks笔记本中获取运行参数和runId?

时间:2020-07-21 16:26:22

标签: python databricks

将Databricks笔记本作为作业运行时,可以指定作业或运行可在笔记本代码中使用的参数。但是,从文档中尚不清楚如何实际获取它们。我希望能够获取所有参数以及作业ID和运行ID。

1 个答案:

答案 0 :(得分:1)

作业/运行参数

当笔记本作为作业运行时,可以使用Databricks自动提供和导入的dbutils软件包将任何job parameters提取为字典。这是代码:

run_parameters = dbutils.notebook.entry_point.getCurrentBindings()

如果作业参数为{"foo": "bar"},则以上代码的结果将为您提供字典{'foo': 'bar'}。请注意,Databricks仅允许将作业参数从str映射到str,因此键和值将始终是字符串。

请注意,如果笔记本以交互方式运行(而不是作为作业),则字典将为空。 getCurrentBinding()方法似乎也可以用于使笔记本计算机处于活动状态widget values(在交互式运行时)。

获取jobId和runId

要获取jobIdrunId,您可以从dbutils获取包含该信息的上下文json。 (改编自databricks forum):

import json
context_str = dbutils.notebook.entry_point.getDbutils().notebook().getContext().toJson()
context = json.loads(context_str)
run_id_obj = context.get('currentRunId', {})
run_id = run_id_obj.get('id', None) if run_id_obj else None
job_id = context.get('tags', {}).get('jobId', None)

因此,在上下文对象中,runId的键路径为currentRunId > id,而jobId的键路径为tags > jobId