1. 课程导入与Databricks湖仓全景

欢迎进入《Databricks企业数据湖仓建模与开发》。在动手写第一行 PySpark 之前,我们需要先建立一张"全局地图":企业数据平台到底要解决什么问题,Lakehouse 为什么会出现,Databricks 平台由哪些组件构成,以及本课程将用一个什么样的实战项目把 30 章内容串起来。这一章不涉及复杂代码,但它决定了你后续每一章"为什么这么做"的判断依据。

一、从数据湖与数据仓库的割裂说起

传统企业数据架构长期存在两条并行链路。一条是数据湖:以 HDFS、S3、ADLS 等对象存储为底座,存放原始日志、JSON、Parquet、图片等半结构化与非结构化数据,成本低、格式自由,但缺乏事务、缺乏 Schema 约束、缺乏高效点查与更新能力,容易退化成"数据沼泽"。另一条是数据仓库:以 Teradata、Oracle、Snowflake、Redshift 为代表,提供强 Schema、ACID 事务、SQL 优化器和成熟的 BI 生态,但存储与计算耦合、扩展成本高,且难以直接处理原始文件和机器学习特征。

结果是同一份业务数据被反复搬运:湖里存一份原始数据,ETL 到仓里再存一份清洗结果,特征工程又在第三处再存一份。数据冗余、口径不一致、链路延迟、治理困难,成为企业数据团队最典型的痛点。Lakehouse(湖仓一体)的核心价值,就是用一套存储、一套元数据、一套权限,同时提供数据湖的低成本开放格式与数据仓库的事务、性能与治理能力。

二、Lakehouse 的四个关键能力

理解 Lakehouse,抓住四个关键词即可:

  • 开放格式:底层数据以 Parquet 等开放列式格式落地在对象存储上,不被厂商锁定,Spark、Trino、Flink、Pandas 都能直接读。
  • 事务与元数据层:通过 Delta Lake 这样的表格式,在 Parquet 之上维护事务日志(_delta_log),实现 ACID、时间旅行、Schema 演进与 MERGE/UPSERT。
  • 统一治理:Unity Catalog 提供跨工作区、跨云的表、视图、函数、模型、卷的统一权限与血缘。
  • 多负载融合:BI 报表、流式处理、数据科学、机器学习、GenAI 在同一份数据上工作,不再需要为每种负载复制一份。

需要强调的是,Lakehouse 不是"把仓库搬到湖上"这么简单。它要求我们重新思考分层建模:Bronze(原始接入)、Silver(清洗整合)、Gold(主题聚合)三层如何在 Delta 表上落地,增量如何处理,维度与事实如何组织,这些正是本课程后续章节的主线。

三、Databricks 平台组件地图

Databricks 是 Lakehouse 的典型工程实现。它的组件可以按"控制面—计算面—数据面—治理面"来理解:控制面是账户控制台与工作区 UI,负责用户、集群策略、作业调度;计算面包括 All-Purpose Cluster、Job Cluster、SQL Warehouse、Serverless 计算;数据面是 Delta 表与对象存储;治理面是 Unity Catalog。围绕这些底座,平台提供 Notebook、Delta Live Tables(DLT)、Workflows、Databricks SQL、MLflow、Feature Store、Model Serving 等能力。

下面这张图把本节的核心对象——存储格式、表格式、计算引擎、治理与上层负载——组织成一张平台全景图,帮助你建立"数据从哪来、经过什么、被谁消费"的空间感。

Databricks Lakehouse 平台组件全景 开放存储 · 事务表格式 · 弹性计算 · 统一治理 · 多负载消费 数据源 业务库 CDC 应用日志 / JSON Kafka 流 / 文件 第三方 API 对象存储(开放格式) S3 / ADLS / GCS Parquet 列式文件 低成本 · 可扩展 不被厂商锁定 Delta Lake 表格式 _delta_log 事务日志 ACID · 时间旅行 MERGE / Schema 演进 流批一体读写 计算引擎 Spark / Photon SQL Warehouse Serverless Job / All-Purpose Unity Catalog 统一治理 Catalog · Schema · Table · View · Function · Volume · Model | 权限 · 血缘 · 审计 Lakehouse 分层建模(Delta 表) Bronze 原始接入 保留原貌 · 追加写入 · 可回溯 Silver 清洗整合 去重 · 标准化 · 维度整合 Gold 主题聚合 宽表 · 指标 · 面向消费 统一消费负载 BI 报表 / Databricks SQL 流式处理 / DLT 数据科学 / MLflow GenAI / 特征服务

四、企业数据湖仓的典型场景

在真实企业里,Lakehouse 通常从四类场景切入。第一类是统一数据接入与增量同步:用 Auto Loader 或 Kafka 把业务库 CDC 与日志持续写入 Bronze,再用 MERGE 做幂等更新。第二类是数仓迁移与替换:把原有 ODS/DWD/DWS/ADS 分层映射到 Bronze/Silver/Gold,用 Delta 表承接原仓库的维度和事实。第三类是实时与准实时分析:流式写入 Silver,SQL Warehouse 直接查询,支撑分钟级看板。第四类是机器学习与特征工程:在 Gold 之上构建特征表,用 MLflow 跟踪实验、注册模型并上线服务。

这四类场景共享同一套存储与治理,这正是 Lakehouse 相对"湖 + 仓"双栈方案最直接的收益:链路更短、口径更统一、成本更可控。

五、课程实战项目:零售订单湖仓

为了让 30 章内容有统一的落点,本课程设计了一个贯穿始终的实战项目——零售订单湖仓。项目背景设定为一家中型零售企业,数据源包括:订单系统 MySQL 的 CDC 增量、门店 POS 日志、商品主数据 CSV、以及用户行为埋点 JSON。目标是在 Databricks 上构建 Bronze/Silver/Gold 三层 Delta 表,最终产出"每日门店销售汇总""商品维度宽表""用户复购指标"三张 Gold 表,并支持 BI 查询与一个简单的销量预测模型。

项目会用到以下示例参数(均为教学假设值,非真实生产数据):订单表约 2000 万行、日增量约 30 万行;POS 日志每日约 500 万条;商品主数据约 8 万行;集群采用 2 个 Driver + 4 个 Worker(每 Worker 8 核 32GB)的 Job Cluster;Delta 表按 dt 分区,Z-Order 按 store_id 与 sku_id 优化。这些参数会在后续章节中反复出现,用于演示分区裁剪、文件合并、广播 Join 等优化手段的实际效果。

学习建议:本章不需要记忆所有组件名称,但请务必建立三个判断习惯——看到一份数据,先问它落在哪一层(Bronze/Silver/Gold);看到一个操作,先问它是否可增量、是否幂等;看到一张表,先问它的权限与血缘由谁管理。这三个问题会贯穿整个课程。

六、本课程的学习路径