如何在Databricks DBX的deployment.yaml中为Notebook任务传参并读取?
Databricks DBX Notebook任务参数传递配置与读取方法
当然可以给Notebook任务传递参数,配置和读取方法如下:
一、在deployment.yaml中配置参数
在notebook_task节点下添加parameters字段,格式为字符串数组,示例如下:
workflows: - name: "your-job-name" job_clusters: - job_cluster_key: "basic-cluster" <<: *basic-static-cluster - job_cluster_key: "basic-autoscale-cluster" <<: *basic-autoscale-cluster tasks: - task_key: "task1" python_wheel_task: package_name: "some-pkg" entry_point: "some-ep" parameters: ["param1","param2"] - task_key: "your-task-03" job_cluster_key: "basic-cluster" notebook_task: notebook_path: "/Repos/some/project/notebook" parameters: ["param_value_1", "param_value_2"] # 新增的Notebook参数配置 depends_on: - task_key: "your-task-01"
二、在Notebook中读取参数
有两种常用方式读取传递的参数:
1. 使用Databricks Widgets(推荐)
先在Notebook中定义对应输入widget,再读取参数值:
# 定义字符串类型widget,名称可自定义,默认值可选 dbutils.widgets.text("param1", "", "第一个参数") dbutils.widgets.text("param2", "", "第二个参数") # 读取参数值 param1_value = dbutils.widgets.get("param1") param2_value = dbutils.widgets.get("param2") print(f"参数1的值:{param1_value}") print(f"参数2的值:{param2_value}")
注意:传递的参数会按顺序对应到widget的定义顺序,第一个参数对应第一个定义的widget,以此类推。
2. 通过sys.argv读取(适用于Python Notebook)
直接从命令行参数中读取,传递的参数会作为sys.argv的元素(索引0为Notebook路径,参数从索引1开始):
import sys if len(sys.argv) > 1: param1_value = sys.argv[1] param2_value = sys.argv[2] print(f"参数1的值:{param1_value}") print(f"参数2的值:{param2_value}")
内容的提问来源于stack exchange,提问作者Tarique
相关产品推荐
相关产品推荐

