Databricks 的 Spark Declarative Pipelines 基准测试说明:智能体犯错可以更省钱
Databricks 于 10 月 23 日发布了一项 Spark Declarative Pipelines 基准测试,称声明式智能体构建所需的执行器时间约少 34 倍。这项对比考察的是数据管道,即将源记录转换为可用数据集的程序。其核心论点在于:错误是在验证阶段发生,还是在执行开始后才被发现,成本会截然不同。
声明式编程描述所需的输出,并将执行细节交由框架处理;过程式编程则直接规定各个步骤。Databricks 认为,当 AI 智能体生成代码时,这一区别值得获得更多关注。眼下的直接压力落在工程团队身上:他们需要决定这些智能体如何构建和修改生产工作负载。
相关对比并不止于 Spark 语法。Apache Airflow 负责组织工作流,而 dbt 提供转换和测试工具。两者都不能直接替代所有 Spark 工作负载,但它们共同构成了一个有用的参照:团队已经在作者、验证者、调度者和审查者之间分配责任。智能体的采用让这些边界成为实际的采购和架构问题。
Spark Declarative Pipelines 基准测试实际衡量了什么
Databricks 所要论证的是迭代成本,而不是最终答案准确率的决定性提升。
该公司的管道编写基准测试涵盖了 22 项任务中的 528 次构建,每项任务包含 12 个输入数据集,并采用两种编程方式。报告称,过程式构建消耗 596 执行器秒,而声明式构建为 17 执行器秒。执行器秒衡量的是累计工作节点执行时间,而非经过时间或完整的基础设施账单。
在已完成的构建中,过程式代码长度中位数为 131 行,声明式为 64 行。声明式编写使用的模型 token 约为前者的 2.3 倍;token 是语言模型处理的单位。这些数字描述的是测试环境,并不能证明生产系统普遍都能获得相同节省。
当一项基准测试从工程博客进入采购讨论时,这一区别至关重要。工作节点时间的衡量回答的问题,比总体运营支出更为狭窄。买方还需考虑开发环境、平台服务、模型使用、维护和人工关注等成本。
同样,累计执行时间并不能说明工程师为获得可接受结果等待了多久。一项评估可能消耗很少的工作节点时间,却需要与智能体进行漫长对话;另一项则可能很快完成,但使用了更多并行资源。这些结果应当分别衡量。
代码长度的结果提出了另一个问题。较短的提交让审查者需要检查的文本更少,但行数更少并不必然意味着推理更简单。一个紧凑的转换仍可能隐藏对客户、日期或交易状态的错误假设。
因此,对工程经理而言,更有用的解读应当是有条件的。如果一个框架消除了重复的执行代码,审查者就能将更多注意力投向剩余的业务决策。是否真能如此,取决于审查流程以及框架行为的可见性。
声明式与过程式管道之间的比较也需要清晰的基线。带有精心设计检查机制的过程式实现,与不受约束的脚本并不相同。在将结果视为架构结论前,团队应询问每种实现分别获得了哪些保障措施。
这篇文章最好被理解为一项设计假设的证据:更早的反馈可以减少不成功尝试所消耗的资源。它提供了一个理由,要求人们在考察智能体生成输出的同时,也审视其工作环境。
这种表述让新闻仍具参考价值,而不会将厂商实验转化为对每次部署的承诺。运营问题因而变得具体:你的平台能在错误消耗昂贵资源之前,拒绝哪些失败?
智能体采用正在给验证边界施压
承受压力的是那些让生成的代码在明确平台可验证内容之前就进入执行阶段的团队。
Databricks 表示,其平台上现已有超过 70% 的 SDP 管道由智能体创建。这一说法针对的是特定产品群体,而不是所有企业管道。
重要的组织层面影响在于责任归属。当一个人编写变更时,同事可以询问为什么选择某种特定执行策略。对于生成的代码,组织仍然需要一位能够解释并批准该策略的责任人。
智能体管道验证成为这一责任模型的一部分。它界定了系统自动检查哪些属性,以及哪些决策仍由审查者负责。一句含糊的“生成可运行代码”指令,并未解决这种分工。
以一个示例性的销售报表管道为例。智能体收到一项请求,要将订单与客户记录关联,并按区域汇总收入。任务听起来很直接,但其验收标准包含若干彼此独立的决策。
工程团队必须确定取消订单是否计入、哪一个客户地址用于定义区域,以及退款如何影响收入。无论智能体编写代码多么流畅,这些决策都不可或缺。
平台可以帮助确认所引用对象是否存在,但无法独立决定销售团队所说的收入究竟指什么。将这两个问题视作同一步审批,会让一次成功执行显得比实际情况更有决定性。
压力同样波及平台买方。展示一个看似合理的数据集很容易理解;而评估系统如何应对不完整需求、无效引用和被拒绝的变更,则需要更严格的演示。
因此,买方应要求供应商展示失败的尝试。相关证据包括返回给智能体的反馈、消耗的资源,以及修订期间可获得的权限。经过打磨的最终结果会让这些运营细节无从得见。
这改变了有效评估的样貌。智能体的首次回答仍然重要,但从错误尝试到获批产物的路径同样重要。周边系统决定了这条路径被允许触及什么。
审查能力也值得同等关注。如果生成的变更到达速度超过审查者的评估能力,较短的提交只能带来部分缓解。团队仍需要明确的验收标准、责任归属,以及记录每项变更背后假设的机制。
正因如此,架构讨论超出了数据工程专家的范围。分析师和业务负责人也通过定义正确结果的含义参与其中。他们的决策成为验证的输入,而不是部署后的非正式解释。
实际可行的做法是在扩大智能体访问权限之前,明确这些责任。否则,自动化只会加快提交速度,而组织的审批流程仍维持不变。
更早拒绝会改变重试的经济性
技术优势来自于:在投入完整数据操作之前,对受约束的描述进行检查。
Apache Spark 的声明式管道指南记录了一种干运行,即不读取或写入管道数据的验证执行。它会检查包括无效语法、无法解析的表或列以及循环依赖在内的问题。该框架还会分析数据集依赖关系,以安排执行顺序。
这种已记录的行为为架构论点提供了具体基础。管道描述暴露出框架可在生成输出前检查的信息。智能体会收到有关该描述的反馈,并可在请求完整运行前进行修订。
经济性问题在于,应将每类反馈安排在何处发生。如果一个问题可以从声明的关系中识别出来,那么通过更大规模的执行才发现它,就会增加本可避免的工作量。即使作者是人类,同样的逻辑也成立。
智能体使这种设计选择尤为重要,因为修订本就是其工作流的一部分。一项请求可以产生候选方案,验证器可以拒绝它,智能体随后可以提交替代方案。这一交互的成本取决于所涉及的工具。
组织应区分成本低的拒绝与零成本的拒绝。验证仍需要软件执行、元数据和支撑基础设施,也需要时间来理解反馈。即使这些成本低于完整运行,也应纳入评估。
有用的比较是:获得可执行信息所需投入的资源承诺。能够准确指出无效引用的明确拒绝,可以引导一次范围有限的修复;笼统的失败消息则可能让智能体猜测该改什么。
这使错误质量成为一种架构特性。能够发现问题却解释不清的平台,仍可能促使不必要的修订。评估智能体管道验证的团队,应在考察最终成功率的同时检查反馈本身。
还存在可复现性问题。如果验证与执行采用不同假设,已获接受的描述仍可能在之后失败,原因是早期检查从未考虑到。买方应询问每个阶段共享哪些环境细节。
因此,声明式与过程式管道之争需要更精确的词汇。相关属性包括可检查的意图、有用的反馈、受控执行和明确陈述的限制。仅凭一种编程标签并不能确立所有这些属性。
框架限制可以通过缩小可接受操作的范围来提供帮助。不过,限制也会影响哪些工作负载能够自然适配。具有特殊执行需求的团队需要评估由此产生的取舍,而不是假定每个现有脚本都能顺利映射。
对 Spark Declarative Pipelines 基准测试最有力的解读是,编写架构本身值得单独评估。先选择一个智能体,再将其执行环境视为次要细节,会让一个重要成本驱动因素未经审视。
这是一项实践层面的主张:应像衡量已完成工作一样仔细衡量重试。提交与接受之间消耗的资源,构成产品行为的一部分。
dbt 和 Airflow 说明为何标签需要谨慎使用
竞争性方法应按责任与覆盖范围比较,而不是简单地排成“声明式胜者、过程式败者”的排名。
Airflow 的工作流依赖模型描述了调度、任务、执行依赖和运营行为。其文档明确将这种编排与各个任务内部执行的工作区分开来。编排是指协调工作何时运行,以及在何种条件下运行。
这种区分很重要。组织可以改进转换任务的编写方式,同时保留更广泛的工作流协调器。仅限于转换代码的比较,并不能证明周边调度系统已无必要。
这能避免一个常见的类别错误。一个管道可能包含声明式转换,而其工作流则通过另一种工具定义。不同组件可以负责同一生产流程的不同部分。
对买家而言,关键问题是哪个组件验证哪种属性。调度器对任务顺序的感知,并不会自动证明所产出记录的正确性。反过来,有效的转换也无法解决交付环节周围的所有运维依赖关系。
dbt 通过其数据测试断言提供了另一个有用的参考。这些检查会评估唯一性、缺失值、可接受值以及记录之间关系等属性。团队也可以通过识别失败行的查询,表达组织特有的断言。
这些功能说明,验证覆盖范围比“平台能够检查管道”这种笼统说法更值得关注。不同检查回答的是不同问题。结构检查和输出断言都可能通过,但它们考察的是不同属性。
假设示例销售数据集要求每笔订单都必须引用一个已知客户。关系断言可以处理这一要求。但它仍无法确定所选客户记录是否代表该笔销售在历史上的正确状态。
这正是产品比较对从业者有用之处。它们揭示了仍需做出的决策,而不是暗示某个框架可以消除判断。买家随后便可评估自身需求还需要多少额外工程工作。
因此,相关的竞争压力是具体的。供应商必须说明生成的工作如何通过结构检查、业务检查和运营控制。泛泛承诺更易于编写,并不能回答这些问题。
现有团队面临着相关的迁移决策。替换熟悉的代码本身也会引入审查、培训和运维工作。任何预期节省都应与这项转型一并评估,而不应孤立呈现。
并不要求每个组件都选择单一的编程风格。更具说服力的方法,是将每项职责分配给团队理解且能够检查其行为的系统。
这也使供应商定位保持恰当比例。该基准关注的是特定的编写方式比较。它并未衡量每个竞争平台、每种工具组合,或更换既有数据技术栈的全部成本。
结构有效性仍无法取代业务逻辑和访问决策
管道可以满足框架的结构规则,却仍然得出错误的业务答案。
Databricks 报告称,在每种方式的 264 次构建中,过程式构建出现了 73 次静默错误,声明式构建出现了 85 次。这些执行返回了错误输出,但没有失败。该公司并未将声明式编写定位为这一类别问题的解决方案。
这一限制应当影响部署决策。一次成功的检查意味着提交的工作满足了该检查所审查的条件。它不应被悄然赋予更广泛的含义,即组织的要求已经得到满足。
dbt 的 SQL 单元测试提供了相关比较。它们会在构建完整生产模型之前,根据小型预定义输入评估转换逻辑。这类示例可以覆盖边界情况和预期结果,但其覆盖范围取决于测试作者的规定。
独立规范至关重要。如果同样的错误假设同时塑造了生成的代码和生成的测试,两者之间的一致性只能提供有限保证。审查者需要一个外部依据来确认预期结果。
回到销售报告的示例。测试可以刻意纳入一笔退款订单,并定义其对收入的预期贡献。其价值来自经批准的会计规则,而不是代理对常见做法的信心。
日期也是如此。转换可以使用有效的时间戳字段,却将交易归入错误的报告期间。围绕期间边界设置明确示例,能让审查者有具体内容可供评估。
这些是说明性案例,并非该基准报告的失败案例。它们说明,结构正确性和业务正确性需要各自独立的验收标准。将它们合并到单一的绿色状态之下,会掩盖这种区别。
访问决策需要另一条边界。Apache Spark 的部署安全指南指出,安全性取决于配置和部署环境。它警告,身份验证及其他保护措施默认并非普遍启用。这些说明针对的是一般的 Spark 部署,而不是关于 Databricks 托管服务的发现。
对于采用代理而言,其含义很直接:验证功能并不能定义完整的安全模型。组织仍需决定哪些身份可以提交工作、检查元数据、执行更改和发布结果。
在试点期间,这一责任应保持可见。限制代理的操作范围,有助于团队评估其行为,而不会将编写能力与广泛的生产权限混为一谈。恰当的范围取决于部署情况。
人工审查也需要持久的依据。需求、已知例外和既往决策应保存在审查者可与代码一同查阅的可搜索知识库中。文档有助于解释为何某一结果符合预期;测试则用于确定已定义的预期是否成立。
尚未解决的问题是,完整工作流究竟提供了多大程度的保障。更早的拒绝处理了一个有意义的失败类别,而组织仍须负责成功执行所涉及的需求与权限。
关注复现、生产核算和审查结果
下一步有价值的证据,应显示这种架构优势是否能在更广泛的工作负载中延续,并改善审批流程。
未来数月内,首要观察信号是独立复现。评估者应公布任务定义、代理指令、验证规则和停止条件。缺少这些细节,看似相似的比较也可能衡量不同的工作环境。
若复现在多样化任务中仍能保留优势,将强化更早获得结构反馈的理由。若结果会随过程式基线发生显著变化,则会缩小结论范围,并指出哪些保障措施最重要。
第二个信号是生产核算。团队需要衡量从初始请求到获接受更改的完整路径。这意味着将模型使用、验证活动、执行资源、耗时以及后续修复工作作为不同类别记录。
总体投入降低的证据,比孤立的资源比率更能直接支持采用决策。如果将集成和审查成本纳入后,节省消失了,那么收益仍然较为有限。无论哪种结果,都能帮助买家作出更准确的决定。
第三个信号是部署后的审查质量。组织应跟踪审查者是否在发布前发现错误假设,以及获接受的管道之后是否仍需进行语义修正。语义修正改变的是含义,而不仅仅是修复执行问题。
改善的审查结果将强化这样一种论点:受约束的编写格式有助于团队管理生成的工作。若错误结果保持不变,则效率理由依然成立,但关于可靠性的主张应受到限制。这些是观察标准,而非已宣布的发布里程碑。
这种区分很重要,因为供应商和买家否则可能各说各话。供应商可能描述执行浪费的减少,而买家则假定业务风险降低。双方都需要说明正在评估哪一种结果。
Spark Declarative Pipelines 基准为团队审视这一差距提供了具体理由。其更广泛的相关性在于,执行系统如何接收、检查并批准拟议工作。随着代理更多参与实现工作,这些设计选择仍然至关重要。
对于工程领导者而言,下一个决策应当是围绕真实需求开展有边界的评估。选择业务方已理解其预期输出的工作。在考察每种方法所需资源和关注度时,保持验收规则稳定。
将失败尝试与成功提交一同保留为证据。记录每个验证器检查了什么、审查者仍需决定什么,以及哪些假设需要澄清。这份记录将揭示,更快的迭代是否也让审批变得更容易。
在扩大代理访问权限之前,请团队明确一个获接受管道的确切含义。验收涵盖结构、业务结果、权限,还是仅涵盖其中一部分?利用这些答案,将 Spark Declarative Pipelines 与现有工作流进行评估,并要求每项更广泛的主张都提供证据。



