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