Databricks Execution & Compute 用于在 Databricks 上运行代码并管理计算资源。它提供三种执行模式,并给出选择依据。
用途 该技能面向需要在 Databricks 上执行代码或管理计算资源的场景,涵盖代码执行与集群、SQL 仓库的生命周期管理。所有示例均使用 Databricks CLI;安装与认证参见 databricks-core 技能。
主要能力
- 代码执行:支持 Python、Scala、SQL、R。
- 执行模式:
- Databricks Connect:适合 Spark 代码(ETL、数据生成),启动即时,状态在 Python 进程内,语言为 Python(PySpark),依赖通过 withDependencies() 管理。
- Serverless Job:适合重型处理(机器学习),冷启动约 25-50 秒,无状态,支持 Python、SQL,依赖通过 CLI 的 environments 规格安装。
- Interactive Cluster:适合跨工具调用保持状态、使用 Scala/R,启动约 5 分钟(若已停止),状态通过 context_id 保持,支持 Python、Scala、SQL、R,依赖需在集群上安装。
- 决策流程:若使用 Declarative Automation Bundles(DABs,项目根目录存在 databricks.yml),先遵循 databricks-dabs 技能;否则优先 Databricks Connect 处理所有 Spark 工作负载,其次 Serverless。Spark 代码优先 Databricks Connect;重型/长时间运行(ML)用 Serverless Job;需要跨调用状态或使用 Scala/R 时用 Interactive Cluster(列出并询问使用哪个)。
- 集群管理:列出、获取详情、启动/重启/终止、永久删除、创建集群;列出节点类型和 Spark 版本;在运行中的集群上执行代码(通过 /api/1.2/contexts/create 和 /api/1.2/commands/execute)。
- SQL 仓库管理:创建、列出、获取、启动、停止、编辑、删除。创建无服务器 SQL 仓库时 min_num_clusters 和 max_num_clusters 为必填(默认 0 会被拒绝)。尺寸包括 2X-Small 到 4X-Large;类型可设 "warehouse_type": "PRO"(默认)或 "CLASSIC"。
使用方式
- Databricks Connect:本地运行,示例: from databricks.connect import DatabricksSession spark = DatabricksSession.builder.profile("my-local-profile").serverless(True).getOrCreate() python my_spark_script.py
- Serverless Job:纯 CLI 流程。先将本地文件作为工作区笔记本上传(文件首行需为 # Databricks notebook source(Python)或 -- Databricks notebook source(SQL)),然后提交一次性运行(databricks jobs submit,可加 --no-wait 立即返回 run_id),再轮询状态并获取结果。注意:get-run-output 使用任务 run_id(.tasks[0].run_id),而非父 run_id;结果需通过 dbutils.notebook.exit(<string>) 返回,print() 不会被捕获。
- Interactive Cluster:默认避免使用,仅在已有经典集群运行、需要跨多次调用的有状态执行(通过执行上下文调试)或用户明确要求时使用。交互式集群启动慢(3-8 分钟)且运行期间产生费用,不要隐式启动。
- CLI 命令映射:上传本地文件为工作区笔记本、运行无服务器代码、获取运行状态、获取运行输出、列出集群、获取集群详情、启动/重启/终止集群、永久删除集群、创建集群、列出节点类型/Spark 版本、在运行中的集群上执行代码、SQL 仓库操作等。
适用场景
- 在 Databricks 上运行 Spark 代码(ETL、数据生成)。
- 重型或长时间运行的处理(如机器学习)。
- 需要跨多次调用保持状态的交互式调试。
- 使用 Scala 或 R 的代码执行。
- 管理集群和 SQL 仓库的生命周期。
限制
- 交互式集群启动慢(3-8 分钟)且运行期间产生费用,默认避免使用。
- Serverless Job 冷启动约 25-50 秒,无状态。
- 创建 SQL 仓库时 min_num_clusters 和 max_num_clusters 为必填。
- 编辑 SQL 仓库时需传递完整期望配置,省略字段会恢复默认值;若仓库已停止,使用 --no-wait 否则编辑会因尝试达到 RUNNING 而报错(变更本身仍会应用)。
- 删除 SQL 仓库不可逆。
- 若使用 DABs,需先遵循 databricks-dabs 技能。
- 安装失败时询问用户,不要自动切换模式。
相关技能:databricks-synthetic-data-gen(使用 Spark + Faker 生成数据)、databricks-jobs(生产作业编排)、databricks-dbsql(SQL 仓库和 AI 函数)。