如何在Databricks Python Wheel任务中获取job_id与run_id?
解决Databricks Python Wheel任务获取Job ID和Run ID的问题
方法1:读取Databricks自动注入的环境变量
Databricks会为运行中的任务自动注入环境变量,直接读取即可拿到所需ID:
DATABRICKS_JOB_ID:对应任务的Job IDDATABRICKS_RUN_ID:对应当前运行的Run ID
在Python Wheel代码中读取的示例:
import os job_id = os.getenv("DATABRICKS_JOB_ID") run_id = os.getenv("DATABRICKS_RUN_ID") # 用于日志或监控的后续逻辑 print(f"当前任务Job ID: {job_id}, 运行实例Run ID: {run_id}")
方法2:在Workflow配置中通过模板变量传递参数
Python Wheel任务的字符串数组参数支持使用Databricks模板变量,只需在配置中正确传递:
- 打开Workflow任务配置,找到Python Wheel任务的参数设置项
- 添加两个参数,分别填入
{{job_id}}和{{run_id}} - 在Wheel的入口脚本中通过命令行参数接收:
import sys def main(): # 按配置中的参数顺序接收,可根据实际业务参数调整位置 job_id = sys.argv[1] run_id = sys.argv[2] # 业务逻辑处理 print(f"通过参数传入的Job ID: {job_id}, Run ID: {run_id}") if __name__ == "__main__": main()
方法3:使用Databricks Utilities(dbutils)获取
如果Wheel运行在Databricks集群环境中,可通过dbutils读取内置参数:
from pyspark.dbutils import DBUtils from pyspark.sql import SparkSession spark = SparkSession.builder.getOrCreate() dbutils = DBUtils(spark) job_id = dbutils.widgets.get("jobId") run_id = dbutils.widgets.get("runId")
注意:该方式依赖Spark环境,无服务器集群或轻量任务场景需确认dbutils可用性。
内容的提问来源于stack exchange,提问作者Gohmz
相关产品推荐
相关产品推荐

