2025年:基于DataFusion的系统达到1000个的一年

导航至

Apache DataFusion 已经达到一个转折点。它已经超越了早期采用者,现在对于任何构建高性能分析系统的人来说都是一个可行的选择。我预测 2025 年将迎来基于 DataFusion 构建的系统数量的显著加速,而我今年的重点是帮助推动这种增长。

从 0 到 1,000 个项目的旅程

两年前,当向风险投资人和早期合作者介绍 DataFusion 时,我有一个雄心勃勃的目标:1,000 个由 DataFusion 驱动的项目。这个数字是具有鼓舞人心的——既大胆到具有挑战性,又实际到感觉可以实现。我认为我们可能会在 2025 年实现这个目标。

DataFusion 在 2024 年实现了几个关键里程碑,从一项有前景的技术成熟为一个高性能系统的构建块

这一年以一项重大突破结束:DataFusion 43.0.0 成为 ClickBench 中查询 Apache Parquet 文件速度最快的引擎,这标志着基于 Rust 的引擎首次超越传统的 C/C++ 引擎。

这些里程碑并非偶然发生,而是数百名个人和无数工程时数八年不懈努力的结果。图 1 显示了我对 DataFusion 时间线的主观评估以及我对未来几年其加速发展的预测: Figure 1 图 1:DataFusion 项目生命周期中的主要里程碑以及我对项目采用率的估计。我预测 2025 年将非常令人兴奋。

2020-2023 年早期采用者,包括 InfluxDB 3

InfluxData 很早就认识到 DataFusion 的潜力,并将其用于用 Rust 重建 InfluxDB,以及其余的 FDAP 堆栈——Apache Arrow Flight、Apache DataFusion、Apache Arrow 和 Apache Parquet——所有 ASF 技术。当时,DataFusion 仍处于起步阶段,主要由其创建者 Andy Grove 在业余时间开发。

使用众所周知的列式和向量化技术创建一个高性能时序引擎是 InfluxDB 3 设计的核心。这样的引擎需要大量的知识和投入,以前只有少数公司和精英研究机构才能获得。我们相信,用 Rust 编写、作为 ASF 项目以及成为 Arrow 生态系统的一部分,将吸引其他用户使用 DataFusion,他们既能从中受益,又能帮助提供所需的工程技术。这一赌注已经得到了回报,超过 94 人为 最新版本做出了贡献。

InfluxData 并非唯一认识到 DataFusion 潜力的公司。 CoralogixGreptimeSynnada 等公司也拥抱了 DataFusion,他们相信,在它的基础上构建并为其开发做出贡献,将使他们能够比完全依靠自己更快、更经济高效地交付更好的产品。

这种集体投资帮助 DataFusion 及其社区发展壮大,同时为早期采用者带来了切实的利益。虽然这一过程伴随着挑战,但回报无疑是巨大的。

如今,在 InfluxDB 3 中,数据处理的每个方面都在 Line Protocol 解析后流经 DataFusion 计划。这包括写入和压缩 Apache Parquet 文件以及执行 SQL、InfluxQL 和 Flux 查询。仅我们的多租户生产系统每天就执行数千万个 DataFusion 计划。来自更广泛的 DataFusion 社区的改进直接流入 InfluxDB 3,其中来自客户的 许多 错误 报告SQL 功能请求 SQL 功能请求 由其他贡献者在上游解决——只需要版本升级。

2023-2025 年:势头强劲

拥有专门工程团队的主要公司现在正在不同的环境中构建和部署基于 DataFusion 的系统,同时回馈项目。这种良性循环推动了性能和功能的快速创新,而采用仍处于早期阶段。过去两年是一个转折点,来自 Apple、eBay、快手、Airbnb、TikTok、华为和阿里巴巴等领先科技公司的工程师为 DataFusion 做出了重大贡献。

去年,Apple 开发者使用 DataFusion 构建了 Spark 查询执行的替代方案,并将其捐赠给 ASF,现在作为 Apache DataFusion Comet 进行开发,这是一个关键的里程碑。这不仅证明了 Apple 对 DataFusion 的信心,也激发了更广泛的开源社区的更多贡献,加速了其发展。

集成到开放数据湖中

在 2025 年,随着行业拥抱 开放数据湖架构,DataFusion 的采用率将飙升。如图 2 所示,数据格局正在演变成由专门的处理系统组成的星座,每个系统都针对独特的用例量身定制。 Figure 2 图 2:下一代分析:基于开放的 Apache Parquet 和 Apache Iceberg 格式的共享存储层,存储在 AWS S3、GCP Cloud StorageAzure Blob Storage 等对象存储上的不同工具组成的星座。

这些系统将共享存储在 Apache Parquet 开放格式中的相同底层数据,由 Apache Iceberg 组织,并针对不同的用例进行定制。在这种架构中实现高性能需要先进的向量化分析技术——DataFusion 在这方面表现出色,这归功于其 宽松的许可可扩展的设计卓越的 Parquet 性能。基于 Rust 实现的 Delta LakeApache IcebergApache Hudi 都是使用 DataFusion 构建的,这突显了 DataFusion 在向开放式模块化数据架构转变中的核心作用。

为了支持这种激增,我预计 DataFusion 社区将进行更多投资,以改进这种新架构中查询的技术基础。努力包括 简化和加速远程文件查询 以及探索 高级缓存策略

简化下游用户的采用

2025 年投资的另一个主要主题将是减少下游用户采用新版本 DataFusion 时的摩擦。DataFusion 最近为完成 StringView窗口函数迁移 等项目所做的努力巩固了其基础,但更改的速度也为 某些升级的下游带来了挑战。

随着生态系统的发展,确保顺利采用更新变得越来越重要。我们正在 讨论改进此过程的方法,并明确 添加新功能/哪些属于核心 DataFusion 的标准

通过平衡创新与稳定性,DataFusion 社区旨在保持其快速改进的速度,同时让用户和贡献者更容易跟上步伐。

更高质量:消除讨厌的错误

随着 DataFusion 的成熟,用户往往会

  • 对功能的广度和深度抱有更高的期望(例如,SQL 和类型支持)
  • 运行越来越复杂的查询

这些趋势自然会暴露功能差距和错误。例如,鉴于 InfluxDB 3 每天在 InfluxData 生产系统上执行数千万个 DataFusion 计划,我们偶尔会发现并报告并帮助修复越来越 深奥的问题

对于任何走向成熟和广泛采用的成功软件来说,这个“强化”阶段都是自然而然的一步。虽然修复这些错误可能很乏味,但这是一项需要集中工程力量的简单任务。我对我们的社区有能力提高质量水平充满信心。

DataFusion 已经受益于 广泛的测试覆盖率,我预测我们将看到对自动化工业测试的更多关注。示例包括 Bruce Ritchie在 SQLite 测试语料库上运行 DataFusion 方面的工作,以及 Yongting You在 Datafusion 上运行 SQLancer 所做的努力。InfluxData 计划也在此领域做出重大贡献,我希望其他使用 DataFusion 的公司也能这样做。

突破性能极限

DataFusion 的核心原则之一是世界一流的性能:基于 DataFusion 构建的应用程序可以主要关注其特定功能,并利用 DataFusion 的性能(就像 LLVM,我最喜欢的,尽管非常极客的比喻)。

DataFusion 已经优化了大多数“唾手可得的成果”,因此持续的性能改进需要细致和专注的工程。我们继续看到诸如 向量化组键改进的剪枝 等性能项目,但质量门槛越来越高。我们将需要社区持续不断的帮助来寻找、实施、评估和验证这些改进。

我特别对与学术团体合作的可能性感到兴奋——博士生中蕴藏着大量人才和专注于底层性能优化的时间。额外的合作可以加速学生的工作成果在实际系统中的应用,并使 DataFusion 更快,我很高兴能帮助实现这一目标。

未来一年

2025 年将非常令人兴奋,因为更多基于 DataFusion 的系统将上市,巩固其作为分析和数据平台基础构建块的地位。数据堆栈的未来是可组合的,而 DataFusion 将是关键组件之一。虽然挑战不可避免,但社区(和我)将专注于尽可能快地推动其向前发展,同时保持稳定的基础,从而形成蓬勃发展的生态系统。

最后,我想用我通常的呼吁(又名 🎣 尝试)来结束:DataFusion 是一个由 开放贡献驱动的开源项目。我们欢迎并鼓励所有人的贡献。审查能力仍然是我们最有限但最有影响力的资源,我鼓励公司和个人投入时间审查代码、测试提案并帮助维护项目。

最后,我要对 InfluxData 表示感谢。正是 InfluxData 的远见卓识和对 DataFusion 潜力的早期认识,让我接触了这个项目,并在过去 4.5 年里支持了我的贡献。这使我能够深入参与——审查 无数 PR、贡献更多功能(直接和间接与 InfluxDB 3 相关)、撰写 许多 博客 文章、参加聚会旅行以及支持我担任项目的 PMC。

2025 年将是 DataFusion 的关键一年,我期待看到这个社区将推动的创新。

[1] 这些列表上的数字看起来不大,但它们只包括公开撰写其使用情况的人员。我知道许多未列出的内部项目/数据系统也使用 DataFusion。

[2] 毕竟,我是一名数据库内部开发人员。这有多酷!!