2. Databricks 工作区与计算资源

在 Databricks 中,工作区(Workspace)是用户操作与协作的入口,而真正执行数据处理的,是工作区背后挂载的计算资源。理解“工作区负责组织资产、计算资源负责执行任务”这一分工,是后续所有批流一体开发的基础。本节围绕三类核心计算形态——通用集群、SQL 仓库、作业计算——讲清它们的定位、创建方式、关键参数,以及自动伸缩与 Photon 加速的配置逻辑。

一、三类计算资源的定位差异

Databricks 的计算资源并非只有一种。按使用场景划分,最常用的是以下三类:

  • 通用集群(All-Purpose Cluster):面向交互式分析、Notebook 开发与调试。它长期存活、可多人共享,适合探索性工作,但成本相对较高。
  • SQL 仓库(SQL Warehouse):专为 SQL 与 BI 查询优化,支持 Photon 引擎,按查询或按时间计费,适合仪表盘、报表和即席 SQL。
  • 作业计算(Job Compute):由作业(Job)在运行时临时创建,任务结束即释放,适合生产调度与批处理,成本最可控。

三者的关键区别在于“生命周期”和“计费方式”:通用集群是常驻的,SQL 仓库是按需启动的,作业计算是随任务生灭的。选择哪一类,取决于当前是“人在探索”还是“机器在跑批”。

Databricks 三类计算资源对比 通用集群 All-Purpose Cluster • 交互式 Notebook 开发 • 多人共享、长期存活 • 支持 Scala/Python/SQL/R • 可挂载库、自定义镜像 • 计费:按 DBU·小时 生命周期:手动启停 典型场景:探索/调试 SQL 仓库 SQL Warehouse • 纯 SQL / BI 查询 • 支持 Photon 引擎 • 自动启停、按需伸缩 • 多用户并发隔离 • 计费:按 DBU·小时 生命周期:自动启停 典型场景:报表/仪表盘 作业计算 Job Compute • 生产调度批处理 • 任务运行完即释放 • 支持自动伸缩 • 可复用集群池 • 计费:按 DBU·小时 生命周期:随任务生灭 典型场景:ETL/流处理

二、创建通用集群的关键参数

在左侧导航栏选择 Compute → Create Cluster,进入集群配置页。以下参数决定了集群的能力与成本:

  • Cluster Mode:Single Node(单节点,适合小数据调试)或 Standard(多节点,含 Driver 与 Worker)。
  • Databricks Runtime Version:如 14.3 LTS(长期支持版),生产环境优先选 LTS。
  • Node Type:Driver 与 Worker 的机型,如 Standard_DS3_v2(4 核 14GB)。
  • Workers:固定数量或启用自动伸缩,设置最小/最大 Worker 数。
  • Auto Termination:空闲多少分钟后自动关闭,建议 30~60 分钟。
  • Photon Acceleration:勾选后启用 Photon 向量化引擎。

一个典型的开发集群配置示例:Runtime 14.3 LTS、Driver 为 Standard_DS3_v2、Worker 最小 2 最大 8、空闲 45 分钟自动终止、启用 Photon。这套配置在保证交互响应速度的同时,避免了长期空转带来的浪费。

三、自动伸缩的工作机制

自动伸缩(Autoscaling)根据当前负载动态调整 Worker 数量。它的判断依据是集群中待处理任务(Task)的积压情况:当 Spark 任务队列变长、现有 Worker 处理不过来时,集群会向上扩容;当负载下降、Worker 空闲时,则向下缩容。

配置自动伸缩时有两个关键参数:Min Workers 和 Max Workers。Min 决定了最低保障能力,Max 决定了成本上限。需要注意的是,缩容并非立即执行,Databricks 会等待一段空闲时间后才释放节点,避免频繁抖动。对于流处理任务,建议 Min 不低于 2,以保证持续消费的稳定性。

自动伸缩适合负载波动明显的场景(如白天查询多、夜间批处理少)。如果任务负载稳定且对延迟敏感,固定 Worker 数量反而更可预测。

四、SQL 仓库的创建与 Photon 加速

SQL 仓库在 SQL Warehouses → Create SQL Warehouse 中创建。核心参数包括:

  • Cluster Size:从 2X-Small 到 4X-Large,决定单集群的计算能力。
  • Auto Stop:空闲多久后停止,默认 10 分钟。
  • Scaling:Min/Max clusters,支持多集群并发扩展。
  • Photon:默认启用,加速 SQL 与 DataFrame 操作。

Photon 是 Databricks 用 C++ 重写的向量化查询引擎,它充分利用 CPU 的 SIMD 指令并行处理数据。对于扫描、过滤、聚合、Join 等操作,Photon 通常能带来数倍性能提升。在 SQL 仓库中 Photon 默认开启;在通用集群和作业计算中,需要在创建时手动勾选 Photon Acceleration。

需要注意的是,Photon 并非对所有场景都有效。对于大量使用 UDF、复杂 Python 逻辑或非向量化操作的任务,Photon 的收益有限,甚至可能因兼容性问题需要回退。因此建议在启用后对比查询耗时,用实际数据判断是否保留。

五、作业计算的配置方式

作业计算不单独创建,而是在定义 Job 时指定。在 Workflows → Create Job 中,为每个 Task 选择计算类型:

  • Job Cluster:为该任务临时创建集群,任务结束释放,隔离性最好。
  • Existing All-Purpose Cluster:复用已有通用集群,适合快速调试。
  • Serverless:无需管理集群,由平台自动分配,适合轻量任务。

生产环境推荐使用 Job Cluster,并配置自动伸缩与 Photon。例如一个每日 ETL 作业:Runtime 14.3 LTS、Worker 2~10 自动伸缩、启用 Photon、任务失败重试 2 次。这样既能在数据量大时自动扩容,又能在任务结束后立即释放资源。

六、参数配置速查表

计算类型生命周期自动伸缩Photon典型场景
通用集群手动启停支持可选Notebook 开发调试
SQL 仓库自动启停多集群扩展默认开启BI 报表、即席 SQL
作业计算随任务生灭支持可选生产 ETL、流处理

掌握这三类计算资源的创建与参数配置,是构建批流一体管道的前提。实际工作中,建议先用通用集群完成开发与验证,再将逻辑固化为作业计算投入生产,SQL 仓库则服务于下游的查询与展示。自动伸缩控制成本弹性,Photon 提升执行效率,两者配合使用,才能在性能与开销之间取得平衡。