我目前正在开展一个项目,其中我在 Databricks 上有两项不同的工作。第二项工作取决于第一项工作的结果。
我想知道是否有一种方法可以在第一个作业成功完成后自动触发第二个作业。理想情况下,我希望直接在 Databricks 内完成此任务,而不需要外部调度或编排工具。有谁能够实现这种类型的设置或知道它是否可能?
可以使用 Databricks REST API 启动工作流程。 请参阅此处的文档:https://docs.databricks.com/api/azure/workspace/jobs/runnow
您也可以简单地将 2 个工作流程中的所有任务输入到 1 个工作流程中
还可以使用 Databricks SDK 以编程方式运行作业:
import os
import time
from databricks.sdk import WorkspaceClient
from databricks.sdk.service import jobs
w = WorkspaceClient()
notebook_path = f"/Users/user1/notebook2"
cluster_id = (
w.clusters.ensure_cluster_is_running(os.environ["DATABRICKS_CLUSTER_ID"])
and os.environ["DATABRICKS_CLUSTER_ID"]
)
run = w.jobs.submit(
run_name=f"sdk-{time.time_ns()}",
tasks=[
jobs.SubmitTask(
existing_cluster_id=cluster_id,
notebook_task=jobs.NotebookTask(notebook_path=notebook_path),
task_key=f"sdk-{time.time_ns()}",
)
],
).result()
更多详细信息:https://databricks-sdk-py.readthedocs.io/en/latest/workspace/jobs.html#JobsAPI.run_now