如何在Azure Databricks中不创建新集群执行spark-submit并传参
解决DBFS中PySpark作业执行及传参问题(无新建集群权限、无仓库访问权限)
可行方案
1. 使用现有集群通过Databricks Jobs提交
如果能访问Databricks Jobs界面或CLI,可直接指定现有集群执行DBFS中的脚本:
UI方式:
- 进入Databricks Jobs页面,点击"Create Job"
- 在"Cluster"选项中选择Existing Cluster(选择你有权限访问的集群)
- 在"Task"类型中选择"Python script",指定脚本路径为
dbfs:/your/script/path.py - 在"Parameters"栏输入需要传递的参数(格式为
param1 value1 param2 value2) - 保存并运行作业
CLI方式:
执行以下命令(替换集群ID、脚本路径和参数):databricks jobs create --json '{ "name": "DBFS PySpark Job Execution", "existing_cluster_id": "your-existing-cluster-id", "spark_python_task": { "python_file": "dbfs:/path/to/your/script.py", "parameters": ["--input-path", "dbfs:/input/data", "--output-path", "dbfs:/output/result"] } }'
2. 通过交互式笔记本调用脚本
如果有权限创建并运行笔记本,可通过%run命令直接调用DBFS脚本并传参:
- 创建一个新的笔记本,选择现有集群附加
- 在笔记本单元格中执行:
%run /path/to/your/script.py $input_path="dbfs:/input/data" $output_path="dbfs:/output/result" - 脚本中可通过
dbutils.widgets.get()获取参数:input_path = dbutils.widgets.get("input_path") output_path = dbutils.widgets.get("output_path")
3. 使用Databricks REST API提交作业
如果有权限调用REST API,可发送POST请求创建作业:
POST /api/2.1/jobs/create Content-Type: application/json { "name": "DBFS PySpark Job", "existing_cluster_id": "your-cluster-id", "spark_python_task": { "python_file": "dbfs:/path/to/your/script.py", "parameters": ["param1", "value1", "param2", "value2"] } }
关键注意事项
- 确保你拥有目标现有集群的附加权限(即允许你在该集群上运行任务)
- 脚本中处理参数的方式要和传递方式匹配:用命令行参数则用
sys.argv,用笔记本传参则用dbutils.widgets
内容的提问来源于stack exchange,提问作者DexterMe
相关产品推荐
相关产品推荐

