运维部署
在 Databricks 上开发、部署和运维…
通过 DABs、Python SDK 或 CLI 在 Databricks 上创建、部署和运行 Lakeflow Jobs。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
在 Databricks 上开发、部署和特定
解决思路
- 先使用父技能 `databricks-core` 获取 CLI 基础、认证、profile 选择和数据探索命令。
- 配置任务类型时查看 `references/task-types.md`,覆盖 notebook、Python、SQL、dbt、pipeline、JAR、run_job、for_each。
- 配置触发器和调度时查看 `references/triggers-schedules.md`,覆盖 cron、periodic、file arrival、table update、continuous。
- 配置通知、健康规则、重试、超时、队列时查看 `references/notifications-monitoring.md`。
- 需要完整示例时查看 `references/examples.md`,覆盖 ETL、warehouse refresh、event-driven、ML training、multi-env、streaming、cross-job。
- 用 `databricks bundle init default-python --config-file <(echo '{"project_name": "my_job", "include_job": "yes", "include_pipeline": "no", "include_python": "yes", "serverless": "yes"}') --profile <PROFILE> < /dev/null` 非交互式脚手架新 Job 项目,生成到 `<project_name>/` 目录。
- 在 `project_name` 中只使用字母、数字和下划线。
- 脚手架后在项目目录创建 `CLAUDE.md` 和 `AGENTS.md`,写入项目指导:项目使用 Declarative Automation Bundles(原 Databricks Asset Bundles)部署;安装 Databricks CLI >= v0.288.0 的命令为 macOS `brew tap databricks/tap && brew install databricks`、Linux `curl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sh`、Windows `winget install Databricks.DatabricksCLI`;用 `databricks -v` 验证;AI agent 阅读 `databricks-core` 和 `databricks-jobs` 技能;若技能不可用运行 `databricks aitools install`。
- 按项目结构组织:`databricks.yml` 为 Bundle 配置,`resources/my_job.job.yml` 为 Job 定义,`src/my_notebook.ipynb` 为 notebook 任务,`src/my_module/` 为 Python wheel 包,`tests/test_main.py` 为测试,`pyproject.toml` 为 Python 项目配置。
- 推荐用 Asset Bundles (DABs) 定义 Job:在 `resources/jobs.yml` 的 `resources.jobs` 下设置 `name` 和 `tasks`,任务使用 `notebook_task.notebook_path` 指向 `../src/notebooks/extract.py`。
- 用 Python SDK 创建 Job:导入 `WorkspaceClient`、`Task`、`NotebookTask`、`Source`;创建 `w = WorkspaceClient()`;调用 `w.jobs.create(name="my-etl-job", tasks=[Task(task_key="extract", notebook_task=NotebookTask(notebook_path="/Workspace/Shared/etl/extract", source=Source.WORKSPACE))])`;打印 `job.job_id`。
- 用 CLI 创建 Job:运行 `databricks jobs create --json '{"name": "my-etl-job", "tasks": [{"task_key": "extract", "notebook_task": {"notebook_path": "/Workspace/Shared/etl/extract", "source": "WORKSPACE"}}]}'`。
- 配置多任务 DAG:为每个任务设置 `task_key`,用 `depends_on` 引用上游 `task_key`,按 extract→transform→load 编排。
- 用 `run_if` 控制任务条件:`ALL_SUCCESS`(默认)在所有依赖成功时运行,`ALL_DONE` 在所有依赖完成时运行,`AT_LEAST_ONE_SUCCESS` 在至少一个依赖成功时运行,`NONE_FAILED` 在没有依赖失败时运行,`ALL_FAILED` 在所有依赖失败时运行,`AT_LEAST_ONE_FAILED` 在至少一个依赖失败时运行。
- 任务类型 `notebook_task`:运行 notebooks。
- 任务类型 `spark_python_task`:运行 Python scripts。
- 任务类型 `python_wheel_task`:运行 Python wheels。
- 任务类型 `sql_task`:运行 SQL queries/files/dashboards/alerts。
- 任务类型 `dbt_task`:运行 dbt projects。
- 任务类型 `pipeline_task`:触发 SDP(原 DLT)pipelines。
- 任务类型 `spark_jar_task`:运行 Spark JARs。
- 任务类型 `run_job_task`:触发其他 jobs。
- 任务类型 `for_each_task`:循环遍历输入。
- 触发器 `schedule`:用于 cron-based scheduling。
- 触发器 `trigger.periodic`:用于 interval-based。
- 触发器 `trigger.file_arrival`:用于 file arrival events。
- 触发器 `trigger.table_update`:用于 Unity Catalog table change events。
- 触发器 `continuous`:用于 always-running jobs。
- 计算配置推荐定义可复用 `job_clusters`,用 `job_cluster_key` 在任务间共享,并设置 `spark_version`、`node_type_id`、`num_workers`、`spark_conf`(如 `spark.speculation: true`)。
- Autoscaling 集群:在 `new_cluster` 中设置 `autoscale.min_workers` 和 `autoscale.max_workers`。
- Existing Cluster:在任务中设置 `existing_cluster_id`。
- Serverless Compute:notebook 和 Python 任务省略 cluster 配置以使用 serverless。
- Job Parameters:在 job 级 `parameters` 定义 `name`/`default`,会传给所有任务;可使用 `{{start_date}}` 等动态值引用。
- 在 notebooks 中通过 `dbutils.widgets.get("env")` 和 `dbutils.widgets.get("date")` 访问参数。
- 向特定任务传参:在任务 `notebook_task.base_parameters` 中设置 `env: "{{job.parameters.env}}"` 和 `custom_param: "value"`。
- Python SDK 列出 jobs:`jobs = w.jobs.list()`。
- Python SDK 获取 job 详情:`job = w.jobs.get(job_id=12345)`。
- Python SDK 立即运行 job:`run = w.jobs.run_now(job_id=12345)`。
- Python SDK 带参运行 job:`run = w.jobs.run_now(job_id=12345, job_parameters={"env": "prod", "date": "2024-01-15"})`。
- Python SDK 取消运行:`w.jobs.cancel_run(run_id=run.run_id)`。
- Python SDK 删除 job:`w.jobs.delete(job_id=12345)`。
- CLI 列出 jobs:`databricks jobs list`。
- CLI 获取 job 详情:`databricks jobs get 12345`。
- CLI 运行 job:`databricks jobs run-now 12345`。
- CLI 带参运行 job:`databricks jobs run-now --json '{"job_id": 12345, "job_parameters": {"env": "prod"}}'`。
- CLI 取消运行:`databricks jobs cancel-run 67890`。
- CLI 删除 job:`databricks jobs delete 12345`。
- Asset Bundle 验证配置:`databricks bundle validate --profile <profile>`。
- Asset Bundle 部署到目标:`databricks bundle deploy -t dev --profile <profile>`。
- Asset Bundle 运行 job:`databricks bundle run <job_name> -t dev --profile <profile>`。
- 检查 run 状态:`databricks jobs get-run --run-id <id> --profile <profile>`。
- 销毁资源:`databricks bundle destroy --auto-approve`。
- DABs 权限:在 `resources.jobs.<job>.permissions` 下用 `level` 加 `group_name` 或 `user_name` 授权;`CAN_VIEW` 可查看 job 和运行历史,`CAN_MANAGE_RUN` 可查看、触发、取消运行,`CAN_MANAGE` 完全控制包括编辑删除。
- 运行本地单元测试:`uv run pytest`。
- 开发工作流第 1 步验证:`databricks bundle validate --profile <profile>`。
- 开发工作流第 2 步部署:`databricks bundle deploy -t dev --profile <profile>`。
- 开发工作流第 3 步运行:`databricks bundle run <job_name> -t dev --profile <profile>`。
- 开发工作流第 4 步检查运行状态:`databricks jobs get-run --run-id <id> --profile <profile>`。
- 解决 Job cluster 启动慢:使用带 `job_cluster_key` 的 job clusters 在任务间复用。
- 解决任务依赖不工作:核对 `depends_on` 中的 `task_key` 引用完全匹配。
- 解决 schedule 不触发:检查 `pause_status: UNPAUSED` 和有效 timezone。
- 解决 file arrival 不检测:确保路径权限正确且使用 cloud storage URL。
- 解决 table update trigger 缺事件:验证 Unity Catalog table 和相应 grants。
- 解决参数不可访问:在 notebooks 中使用 `dbutils.widgets.get()`。
- 解决 `admins` group 错误:不能修改 jobs 上的 admins 权限。
- 解决 serverless 任务失败:确保任务类型支持 serverless(notebook、Python)。
- 相关技能:参考 `databricks-dabs` 了解 jobs 和 pipelines 共享的 DABs 配置模式。
- 相关技能:参考 `databricks-pipelines` 了解由 `pipeline_task` 触发的 SDP(原 DLT)pipelines。
- 文档:Lakeflow Jobs 查看 `https://docs.databricks.com/jobs`;任务类型查看 `https://docs.databricks.com/jobs/configure-task`;Declarative Automation Bundles 查看 `https://docs.databricks.com/dev-tools/bundles/`;Jobs API Reference 查看 `https://docs.databricks.com/api/workspace/jobs`;Bundle Examples Repository 查看 `https://github.com/databricks/bundle-examples`。
适用边界 · 注意事项
- 仅适用于 Databricks Lakeflow Jobs;不适用于其他数据编排平台或非 Databricks 作业。
- 需要可用的 Databricks workspace、认证 profile 和 databricks CLI(兼容性要求 >= v1.0.0,CLAUDE.md 中安装要求 >= v0.288.0)。
- 没有 Databricks 账户、CLI 或相应权限时不要使用。