databricks cli 更新作业计划
databricks cli to update job shcedule
我已经在本地配置了 Databricks cli,并且能够连接到 Azure Databricks 集群。 Link 用于我的工作站的参考 - git
- 下面的命令成功列出了 ID 为
的作业
$ databricks jobs list --profile dev
假设我只想将计划(cron 表达式)更新到已部署在工作区中的特定作业,我看不到使用 databricks CLI 执行此操作的任何选项。
注意:在我的例子中,作业是使用作业定义创建的 json,用于在集群中创建作业。此 json 没有开始的时间表信息。
在工作区创建或部署作业后,是否有任何选项可用于仅更新计划?
有一个选项可以立即 运行 命令,databricks jobs run-now
。
REST API 配置
https://docs.databricks.com/dev-tools/api/latest/jobs.html#operation/JobsCreate
The Databricks jobs CLI supports calls to two versions of the
Databricks Jobs REST API: versions 2.1 and 2.0. Version 2.1 adds
support for orchestration of jobs with multiple tasks; see Jobs with
multiple
tasks
and Jobs API
updates.
通过我看到的 MS 文档,您可以使用更新请求来更改现有作业。
databricks jobs update --job-id 246 --json-file update-job.json
输入 json 文件中的计划信息块。
"schedule": {
"quartz_cron_expression": "0 0 0 * * ?",
"timezone_id": "US/Pacific",
"pause_status": "UNPAUSED"
}
参考:MS DOC - 代表 API 2.0 的单任务格式作业的示例 JSON 文档:
{
"job_id": 27,
"settings": {
"name": "Example notebook",
"existing_cluster_id": "1201-my-cluster",
"libraries": [
{
"jar": "dbfs:/FileStore/jars/spark_examples.jar"
}
],
"email_notifications": {},
"timeout_seconds": 0,
"schedule": {
"quartz_cron_expression": "0 0 0 * * ?",
"timezone_id": "US/Pacific",
"pause_status": "UNPAUSED"
},
"notebook_task": {
"notebook_path": "/notebooks/example-notebook",
"revision_timestamp": 0
},
"max_concurrent_runs": 1,
"format": "SINGLE_TASK"
},
"created_time": 1504128821443,
"creator_user_name": "user@databricks.com"
}
要更新作业,请使用 databricks jobs reset
命令。
Databricks Azure jobs CLI docs
文档声称可以进行部分更新,但每当我尝试仅更新计划时,它都会抱怨缺少参数。
一种解决方法是先读取作业设置,然后在更新前编辑作业 json:
databricks jobs get --job-id 1234 > my-job.json
然后更新 my-job.json
并将其与 reset
命令一起使用:
databricks jobs reset --job-id 1234 --json-file my-job.json
我已经在本地配置了 Databricks cli,并且能够连接到 Azure Databricks 集群。 Link 用于我的工作站的参考 - git
- 下面的命令成功列出了 ID 为 的作业
$ databricks jobs list --profile dev
假设我只想将计划(cron 表达式)更新到已部署在工作区中的特定作业,我看不到使用 databricks CLI 执行此操作的任何选项。
注意:在我的例子中,作业是使用作业定义创建的 json,用于在集群中创建作业。此 json 没有开始的时间表信息。
在工作区创建或部署作业后,是否有任何选项可用于仅更新计划?
有一个选项可以立即 运行 命令,databricks jobs run-now
。
REST API 配置 https://docs.databricks.com/dev-tools/api/latest/jobs.html#operation/JobsCreate
The Databricks jobs CLI supports calls to two versions of the Databricks Jobs REST API: versions 2.1 and 2.0. Version 2.1 adds support for orchestration of jobs with multiple tasks; see Jobs with multiple tasks and Jobs API updates.
通过我看到的 MS 文档,您可以使用更新请求来更改现有作业。
databricks jobs update --job-id 246 --json-file update-job.json
输入 json 文件中的计划信息块。
"schedule": {
"quartz_cron_expression": "0 0 0 * * ?",
"timezone_id": "US/Pacific",
"pause_status": "UNPAUSED"
}
参考:MS DOC - 代表 API 2.0 的单任务格式作业的示例 JSON 文档:
{
"job_id": 27,
"settings": {
"name": "Example notebook",
"existing_cluster_id": "1201-my-cluster",
"libraries": [
{
"jar": "dbfs:/FileStore/jars/spark_examples.jar"
}
],
"email_notifications": {},
"timeout_seconds": 0,
"schedule": {
"quartz_cron_expression": "0 0 0 * * ?",
"timezone_id": "US/Pacific",
"pause_status": "UNPAUSED"
},
"notebook_task": {
"notebook_path": "/notebooks/example-notebook",
"revision_timestamp": 0
},
"max_concurrent_runs": 1,
"format": "SINGLE_TASK"
},
"created_time": 1504128821443,
"creator_user_name": "user@databricks.com"
}
要更新作业,请使用 databricks jobs reset
命令。
Databricks Azure jobs CLI docs
文档声称可以进行部分更新,但每当我尝试仅更新计划时,它都会抱怨缺少参数。
一种解决方法是先读取作业设置,然后在更新前编辑作业 json:
databricks jobs get --job-id 1234 > my-job.json
然后更新 my-job.json
并将其与 reset
命令一起使用:
databricks jobs reset --job-id 1234 --json-file my-job.json