T
traeai
登录
返回首页
Databricks

为 MHHS 扩容:Octopus Energy 如何实现 margin 数据工程 50 倍成本下降

9.2Score

TL;DR · AI 摘要

Octopus Energy 通过三流分离架构 + Delta Lake CDF 增量处理,应对 MHHS 政策带来的 48 倍数据增长,实现 50 倍成本下降,日处理行数从 250 亿降至 3 亿。

核心要点

  • 采用三流分离架构(Settlement/Half-Hourly/Monthly)适配不同结算粒度,避免单体流水线重复处理未变更数据。
  • 使用 Delta Lake Change Data Feed (CDF) 实现增量处理,上游表每日处理行数从 250 亿降至 3 亿(-98.8%)。
  • 数据新鲜度从周级提升至日级,支撑每日定价决策,年化节省超 100 万美元(未含增量处理额外收益)。

结构提纲

按章节快速跳转。

  1. §背景:MHHS 带来的数据爆炸

    英国 MHHS 政策要求每日 48 次抄表,使 Octopus Energy 数据量激增 48 倍,原架构年成本预计增加 100 万美元。

  2. 原单体流水线无法适配半小时间隔与月度结算混合场景,盲目扩容成本达 $23.63/结算日(原为 $0.72)。

  3. 构建 Settlement/Half-Hourly/Monthly 三独立流,通过统一多粒度数据层实现 reconciliation,各流可独立优化。

  4. 采用 Delta Lake CDF 后,每日处理行数从 250 亿降至 3 亿,数据新鲜度由周级提升至日级。

  5. 结合分区、Z-Order、广播等 Spark 优化手段,并移除冗余中间表,进一步提升性能与可维护性。

  6. 实现 50 倍成本下降,验证架构重构比单纯扩容更有效,增量处理是高吞吐场景关键优化手段。

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • MHHS 数据架构重构
    • 挑战
      • 数据量 ×48
      • 结算粒度混合(半小时/月)
    • 核心策略
      • 三流分离架构
      • Delta Lake CDF 增量处理
      • 统一多粒度数据源
    • 优化手段
      • Spark 优化(分区/Z-Order)
      • 移除冗余中间表
    • 成果
      • 成本 ↓50x
      • 处理行数 ↓98.8%
      • 数据新鲜度 ↑至日级

金句 / Highlights

值得收藏与分享的关键句。

#Delta Lake#MHHS#数据架构重构#增量处理#能源数据
打开原文

能源转型面临的数据挑战

英国电网正经历数十年来最重大的结构性变革。随着风能、太阳能等可再生能源在发电结构中占比不断提升,间歇性问题已成为首要挑战:阳光充足时电价低廉,而无光无风时则价格高昂。

现有的结算模式——基于每月一次的电表读数与平均用电曲线——已无法准确反映这一价格信号。若无法精准定价,就无法将信号传递给终端用户,需求也就无法随供应波动而动态调整。

市场范围内的每半小时结算机制(MHHS)正是监管层对此作出的回应:全英所有家庭的抄表频率将从每月两次提升至每日48次。这并非一次渐进式升级;对于像Octopus Energy这样服务超过800万客户的能源供应商而言,这意味着驱动每一笔毛利计算、每一项结算义务及每一项商业决策的数据点数量激增48倍。

数据工程层面的影响显而易见:若不进行架构重构,Octopus Energy的毛利数据处理管道基础设施成本预计每年将额外增加100万美元。

仅靠增加算力无法解决问题

面对数据量激增48倍的情况,第一反应通常是扩充基础设施。然而,Octopus Energy毛利数据团队很快发现这种思路并不可行——按旧有架构估算,每次结算日的成本将高达23.63美元,是历史均值的33倍;若叠加整个结算周期,费用将迅速膨胀。

但更深层的问题并非算力成本本身,而是架构与业务需求之间的错配。原有管道设计围绕单一时间粒度构建:计费周期为月度,结算周期亦为月度,整个流程本质上是高度集成的单体结构。

MHHS的引入打破了这一格局:行业费用数据现以每半小时为粒度抵达——每位客户每天产生48个数据点;配备电动汽车(EV)和热泵的智能 tariff 客户需按每半小时进行收入核算;而标准 tariff 客户仍维持月度结算。若将这三类需求全部纳入同一套单体管道处理,则每次运行都必须遍历全部数据集,无论实际变更内容为何。

正如Octopus Energy毛利数据团队负责人Saad Ali所言:“面对此类问题,你不能简单地堆砌算力,而必须从根本上重新设计并重构逻辑。”

架构重构:三流合一,统一数据源

团队围绕三种专用数据流重新设计架构,每条流均按其固有时间粒度独立优化:

  • 结算流(Settlement):面向监管结算与成本分摊,采用每半小时粒度。行业费用数据本身即为每日48个数据点,该流完全匹配此粒度。
  • 每半小时流(Half-Hourly):面向智能 tariff 客户(如电动汽车用户、热泵用户及时间电价产品用户),其商业价值核心即在于每半小时的价格信号。
  • 月度流(Monthly):面向标准 tariff 客户,保持原有月度粒度,但现可与每半小时数据进行对账。

一套名为“任务之任务”(Job of Jobs)的编排模式统一管理三条流之间的依赖关系与并行执行逻辑。各流可独立调优——适用于结算流的Spark优化策略未必适用于非家用户(NHH)。

三条流均建立于统一的下游消费层之上:一个支持多粒度、集中化的数据源,整合了电表读数、智能电表数据及行业流量信息,规模达PB级。该层构成了月度计费与每半小时结算之间的对账桥梁,亦成为本项目中杠杆效应最高的单一优化点。

增量处理:减少98.8%处理行数

若对上游消费表仍采用“每次全量重跑”的朴素策略——即每次运行均重新处理整个PB级数据集——则在新数据规模下,计算成本将不可持续。

Delta Lake的变更数据馈送(CDF)功能使该粒度下的真正增量处理成为可能。管道不再执行全量覆盖写入,而是仅读取自上次运行以来实际发生变化的记录。结果是:每次运行处理的行数由250亿降至3亿——降幅达98.8%。

数据新鲜度亦由周级提升至日级。对商业团队而言,这意味着毛利可见性达到了定价决策的实际粒度——每日清晨即可获取,而非每周一次。

注:下文提及的年化节省100万美元未包含此次上游表增量处理带来的额外收益,整体效率提升更为显著。

Spark与Delta优化——以及需要移除的内容

面对系统中激增48倍的数据流,团队在四个维度上实施了经实测验证的针对性优化:

血缘与I/O优化

  • 简化血缘链:在管道早期阶段即合并数据,减少下游的连接(join)与洗牌(shuffle)操作;
  • 数据裁剪:仅选取结算所需的关键字段,并在尽可能早的阶段过滤无关行,从而降低昂贵转换前的I/O开销。

连接与分区调优

  • 对小于500MB的参考表启用广播连接(Broadcast Join),避免在含日期范围的多键复杂连接中产生高成本的洗牌操作;
  • 在多个表上启用Liquid Clustering(液态聚类),针对频繁用于过滤与连接的字段。Liquid Clustering可动态将相关记录按指定键聚簇,无需固定分区边界,从而规避过度分区引发的小文件问题、内存消耗过高及I/O开销。

信任优化器

  • 在多个案例中,Spark 的自适应查询执行(AQE)性能优于人工调优逻辑。团队移除了自定义优化代码,让 AQE 自行发挥作用。

最后一点值得特别强调:移除不必要的计算操作所带来的收益,与新增优化措施同等重要。如果你在未评估其实际效果的情况下运行 Z-ordering 或 ANALYZE 操作,它们可能带来的成本甚至会超过其节省的开销。

无服务器架构作为开发加速器

Databricks Serverless 架构使三个月内完成交付成为可能。零集群启动时间使团队能够快速迭代——编写、运行、测量、调整——而无需等待基础设施资源的配置。

Serverless 的用户界面支持并排运行结果对比,使团队能够轻松识别单个优化措施的实际效果。

正如团队所言:“没有无服务器架构,测试与开发流程将无法实现。Serverless UI 帮助我们快速定位瓶颈,并便捷地对比不同运行结果。

成果

指标 | 优化前 | 优化后 | 变化 ---|---|---|--- 每次运行处理的行数 | 250 亿 | 3 亿 | 下降 98.8% 每次结算日成本(按 MHHS 预估)| 23.63 美元 | 0.48 美元 | 约降低 50 倍 每次结算日成本(对比旧系统)| 0.71 美元 | 0.48 美元 | 效率提升 2 倍 每月末运行节省成本 | — | 约 83,000 美元(相比未优化预估)| — 年度成本规避(不含上游节省)| — | 约 1,000,000 美元 | — 数据新鲜度 | 每周 | 每日 | 提升 7 倍 开发周期 | — | 3 个月 | 3 人团队完成

0.48 美元/结算日 不仅意味着相比 MHHS 预估成本降低了 50 倍,更比旧系统的历史最低成本还低了一半——尽管处理的数据点数量提升了 48 倍。重构不仅实现了监管合规,更使系统整体效率显著超越被替代的旧系统。

跨行业启示

MHHS 是英国能源监管要求,但其背后所代表的模式——因监管或业务事件触发、在更细粒度上导致数据量激增——并不仅限于能源行业。当系统从月度升级为每日、每日升级为实时、聚合升级为交易级时,都会面临相同的挑战。

Octopus Energy 的经验可提炼出四条可迁移的核心启示:

  1. 粒度错配是隐藏的成本驱动因素

当数据管道无论业务需求如何,均以最细粒度处理全部数据时,你将为计算资源、数据新鲜度与维护复杂性付出额外代价。请识别数据中的自然粒度,并据此设计处理逻辑。

  1. 增量处理重塑管道经济性

98.8% 的行数减少源于基于 CDF(Change Data Feed)的增量逻辑,而非 Spark 调优。应优先考虑增量处理——且需注意,实际节省通常高于表面数字

  1. 先移除,再添加

在假设需要更多计算资源前,请先审计现有优化策略。未经效果验证而盲目使用 Z-ordering、ANALYZE 或自定义 Shuffle 逻辑,可能得不偿失。

  1. 信任内置优化器

在多个案例中,AQE 的表现优于人工编码逻辑。在编写自定义优化逻辑前,请先验证 Spark 是否已能妥善处理你的场景。

更宏观的视角

正如 Saad 所言:“通过提升系统速度与效率,我们得以提供更智能的电价方案,帮助客户在电价最低、最清洁的时段使用能源。

成本的降低带来了具体价值:它消除了高频数据处理的经济门槛,使电网平衡(grid balancing)成为可行产品,进而支撑智能电价的商业可持续性。大规模数据工程的价值,正在于连接监管合规与能源转型——它并非后台运维成本,而是商业价值的基石。

MHHS 合规是任务起点,而让可持续能源变得触手可及,才是使命所在。数据工程,正是连接二者的桥梁。

延伸阅读

———

_Saad Ali 是 Octopus Energy Margin Data 团队负责人;Ismail Makhlouf、David Poulet 与 Daniel Taylor 是 Databricks 的解决方案架构师。_

AI 可能会生成不准确的信息,请核实重要内容

为 MHHS 扩容:Octopus Energy 如何实现 margin 数据工程 50 倍成本下降 | Databricks | traeai