databricks cli 更新作业计划

databricks cli to update job shcedule

我已经在本地配置了 Databricks cli,并且能够连接到 Azure Databricks 集群。 Link 用于我的工作站的参考 - git

$ 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