Azure 管道步骤 - 触发 Databricks 作业
Azure Pipeline Step - Trigger Databricks Job
我正在尝试在管道步骤中触发数据块作业,我在其中使用从上一步作为变量传递的作业 ID。
这就是我创建作业 ID 并将其作为变量传递的方式:
- script: |
job_id=$(databricks jobs create --json '{"name": "test", "existing_cluster_id" : "'"$(db_clusterid)"'", "notebook_task ": {"notebook_path": "'"$(nbpath)"'"}}')
echo "##vso[task.setvariable variable=db_job_id;]'"$job_id"'"
env:
DB_HOST: $(db_host)
DB_TOKEN: $(db_token)
displayName: 'Create Job'
当我在下一步中回显变量时,它看起来符合预期:
- script: |
echo $DB_JOB_ID
env:
DB_JOB_ID: $(db_job_id)
DB_HOST: $(db_host)
DB_TOKEN: $(db_token)
displayName: 'Echo Job ID'
来自回显的输出:
'{ "job_id": 123 }'
但是,当我尝试 运行 作业时,如下所示:
- script: |
databricks jobs run-now --job-id $DB_JOB_ID
env:
DB_JOB_ID: $(db_job_id)
DB_HOST: $(db_host)
DB_TOKEN: $(db_token)
displayName: 'Run Job'
出现以下错误信息:
Error: Got unexpected extra arguments ("job_id": 123}')
我没有提供 $DB_JOB_ID
,而是尝试了 "$DB_JOB_ID"
和 "'"$DB_JOB_ID"'"
,但都没有用。
正确的说法是什么?
您的问题是您要放入返回的整个 JSON,而 run-now
只需要作业 ID,即数字。您可以将 --job-id $DB_JOB_ID
替换为 --job-id $(echo $DB_JOB_ID||sed -e 's|^.*:[ ]*\([0-9][0-9]*\)[ ]*.*$||')
- 它只会提取所需的作业 ID。
P.S。而不是 databricks jobs create
作为一步,然后 运行 宁 databricks jobs run-now
,最好使用 databricks jobs submit
(或使用 Run Submit REST API)——它只会 运行 作业而不创建它。
您还可以查看在 Databricks 内部开发的 dbx package - 它可能会简化您如何安排作业、等待结果等的方式。
我正在尝试在管道步骤中触发数据块作业,我在其中使用从上一步作为变量传递的作业 ID。
这就是我创建作业 ID 并将其作为变量传递的方式:
- script: |
job_id=$(databricks jobs create --json '{"name": "test", "existing_cluster_id" : "'"$(db_clusterid)"'", "notebook_task ": {"notebook_path": "'"$(nbpath)"'"}}')
echo "##vso[task.setvariable variable=db_job_id;]'"$job_id"'"
env:
DB_HOST: $(db_host)
DB_TOKEN: $(db_token)
displayName: 'Create Job'
当我在下一步中回显变量时,它看起来符合预期:
- script: |
echo $DB_JOB_ID
env:
DB_JOB_ID: $(db_job_id)
DB_HOST: $(db_host)
DB_TOKEN: $(db_token)
displayName: 'Echo Job ID'
来自回显的输出:
'{ "job_id": 123 }'
但是,当我尝试 运行 作业时,如下所示:
- script: |
databricks jobs run-now --job-id $DB_JOB_ID
env:
DB_JOB_ID: $(db_job_id)
DB_HOST: $(db_host)
DB_TOKEN: $(db_token)
displayName: 'Run Job'
出现以下错误信息:
Error: Got unexpected extra arguments ("job_id": 123}')
我没有提供 $DB_JOB_ID
,而是尝试了 "$DB_JOB_ID"
和 "'"$DB_JOB_ID"'"
,但都没有用。
正确的说法是什么?
您的问题是您要放入返回的整个 JSON,而 run-now
只需要作业 ID,即数字。您可以将 --job-id $DB_JOB_ID
替换为 --job-id $(echo $DB_JOB_ID||sed -e 's|^.*:[ ]*\([0-9][0-9]*\)[ ]*.*$||')
- 它只会提取所需的作业 ID。
P.S。而不是 databricks jobs create
作为一步,然后 运行 宁 databricks jobs run-now
,最好使用 databricks jobs submit
(或使用 Run Submit REST API)——它只会 运行 作业而不创建它。
您还可以查看在 Databricks 内部开发的 dbx package - 它可能会简化您如何安排作业、等待结果等的方式。