1. Databricks平台与数据建模全景

Databricks 是一套围绕 Lakehouse(湖仓一体)理念构建的数据与 AI 平台。理解它的关键,不是记住一堆产品名,而是先看清一条主线:存储层用开放格式承载原始与加工数据,元数据层用 Unity Catalog 统一治理,计算层用工作空间与集群按需执行,工程层用 Delta Lake 保证可靠性与增量处理。数据建模与分析工程,正是在这条主线上展开的。

Lakehouse:把数据湖的开放性与数仓的可靠性合在一起

传统数据湖能存海量原始数据,但缺少事务、约束和高效更新;传统数据仓库可靠、查询快,但格式封闭、扩展成本高。Lakehouse 的做法是:数据仍以 Parquet 等开放格式存放在云对象存储(如 S3、ADLS、GCS)上,但在其上叠加一层事务与元数据管理,使表具备 ACID、时间旅行、Schema 演进等能力。这层能力由 Delta Lake 提供。

因此,Lakehouse 的典型分层可以理解为:云对象存储(物理文件)→ Delta 表(带事务日志的逻辑表)→ Unity Catalog(跨工作空间的统一元数据与权限)→ 计算资源(集群/SQL 仓库)→ 工作空间(Notebook、作业、仪表盘)。建模时,我们关心的“表”其实是 Delta 表,而不是散落的文件目录。

Delta Lake:让表具备事务与可追溯性

Delta 表在数据目录旁维护一个 _delta_log 事务日志,按顺序记录每次提交(commit)。一次写入会生成新的 JSON 提交文件,记录新增/删除的文件、Schema 变化和统计信息。读取时,引擎先读日志确定当前有效文件集合,再读数据文件。这带来几个对建模直接有用的性质:

  • ACID 事务:并发写入不会读到中间状态,适合多任务同时加工同一张表。
  • 时间旅行:可用 VERSION AS OF 或 TIMESTAMP AS OF 查询历史版本,便于回溯与对账。
  • Schema 演进:可安全新增列,配合 mergeSchema 处理上游字段变化。
  • MERGE 与增量处理:支持 upsert,是维度表和事实表增量更新的基础。

例如,把每日订单增量写入 Delta 表,可用如下方式(示例参数,非实测结果):

MERGE INTO silver.orders AS t
USING staging.orders_daily AS s
ON t.order_id = s.order_id
WHEN MATCHED AND s.updated_at > t.updated_at THEN UPDATE SET *
WHEN NOT MATCHED THEN INSERT *;

执行后可通过 DESCRIBE HISTORY silver.orders 查看提交记录,确认本次操作类型、影响行数与时间戳,从而判断是否按预期完成。

Unity Catalog:统一元数据与权限

Unity Catalog(UC)是跨工作空间的统一治理层,采用三层命名空间:catalog.schema.table。它管理表、视图、函数、模型、卷(Volume)等对象,并统一控制权限。对建模而言,UC 的价值在于:

  • 命名规范统一,避免每个工作空间各自为政;
  • 权限可授予到 catalog、schema、table 甚至列级;
  • 配合血缘(lineage)可追踪表与表之间的加工关系。

一个常见的分层命名示例:prod_lakehouse.bronze.orders_raw、prod_lakehouse.silver.orders_clean、prod_lakehouse.gold.dim_customer。Bronze 存原始接入数据,Silver 做清洗与整合,Gold 面向分析与建模输出。

工作空间与计算资源

工作空间是协作入口,承载 Notebook、作业(Job)、SQL 仓库、仪表盘和 Git 集成。计算资源主要分两类:通用集群用于 Notebook 与作业,可配置 Spark;SQL 仓库用于 BI 与 SQL 分析,按需启停。建模时通常先用交互式集群探索数据,再把稳定逻辑固化为作业调度。

整体工作流

把上述组件串起来,一个典型的数据建模与分析工程流程是:从源系统接入到 Bronze;在 Silver 做清洗、去重、标准化并建立维度与事实;在 Gold 做聚合与宽表;最后通过 SQL 仓库或仪表盘消费。每一步都写入 Delta 表,由 Unity Catalog 统一管理,由集群执行。

Lakehouse 分层与建模工作流 源系统 业务库 / 日志 / 文件 Bronze 原始接入 Delta 表 Silver 清洗 / 去重 / 标准化 Gold 维度 / 事实 / 宽表 消费层 SQL 仓库 / 仪表盘 / ML 云对象存储(S3 / ADLS / GCS)· Parquet 数据文件 + _delta_log 事务日志 Delta Lake 提供 ACID、时间旅行、Schema 演进、MERGE 增量更新 Unity Catalog catalog.schema.table · 权限 · 血缘 · 函数 / 模型 / 卷 示例:prod_lakehouse.silver.orders_clean 工作空间与计算资源 Notebook / Job / Git · 通用集群(Spark)· SQL 仓库 交互探索 → 固化为调度作业

这张图把“数据怎么流、表存在哪、谁管权限、谁来算”放在同一张视图里。建模时,先确定 Bronze/Silver/Gold 各层要产出哪些表,再为每张表定义主键、分区、更新策略和权限,最后选择用交互集群还是作业来执行。这样,平台组件就不再是孤立名词,而是围绕建模目标协同工作的整体。

初学时最容易混淆的是“表”和“文件”。在 Databricks 中,应始终通过 catalog.schema.table 访问 Delta 表,而不是直接读写对象存储路径,这样才能获得事务、权限和血缘能力。