第 3 篇:Lakehouse 的数据摄入和建模别只盯着批流一体

很多团队做 lakehouse 时,最容易被“批流一体”四个字带偏。因为这个词听起来很高级,仿佛只要把一套链路同时支持 batch 和 stream,平台升级就完成了。

但在真实工程里,决定系统稳定性的往往不是批流一体本身,而是数据层级和责任边界有没有拆清楚。

数据摄入最怕一层写到底

一个常见错误是:把所有逻辑都压进同一层作业里,原始接入、清洗、去重、宽表拼接、质量修复、消费输出全放一起。

这样短期看起来省事,长期问题会非常大:

  • 某一层变更会牵连整条链路
  • 回放和补数边界很难定义
  • 数据质量问题不容易定位到哪一层
  • 成本和资源消耗难以归因

更稳的做法通常还是分层:

  • Raw / Bronze:承接原始事实
  • Clean / Silver:处理标准化与基础质量
  • Serving / Gold:面向分析和消费输出

建模要跟消费路径绑定

lakehouse 的建模如果只从存储角度出发,很容易做成“表很多,但没人会用”。

真正应该一起设计的是:

  1. 谁来消费这份数据。
  2. 查询延迟要求是什么。
  3. 是要支持反复回放,还是要稳定服务报表。
  4. 哪些层允许重算,哪些层必须保证稳定输出。

只有把消费路径拉进来,分层和建模才不会停留在漂亮图纸上。