基于 DataFusion 构建的 7 个项目
作者:Charles Mahler / 开发者
2025 年 2 月 25 日
导航至
2024 年对于 Apache DataFusion 来说是意义重大的一年,而2025 年看起来将会更加辉煌。该项目正式成为 Apache 软件基金会的顶级项目,在 ClickBench 基准测试中查询 Parquet 文件方面取得了最佳性能,并且一篇研究论文被 SIGMOD 接受。
随着公司寻求更快、更具成本效益的方式来构建数据密集型应用程序,DataFusion 已成为一种越来越有价值的工具。DataFusion 提供了一个开箱即用、功能强大、可嵌入且可扩展的解决方案。这使得初创公司和开源项目能够与已建立的数据平台竞争,通过提供高性能分析,而无需从头开始开发查询引擎的传统成本。
在这篇文章中,我们将探讨一些利用 DataFusion 为各种应用提供支持的项目,从实时可观测性到 AI 驱动的数据基础设施。
Pydantic Logfire
Pydantic 是一个流行的 Python 开源数据验证库。它使用 Python 类型注解来验证和解析数据,确保变量和配置符合指定的类型和约束。
Pydantic 团队创建了 Logfire,以简化 Python 应用程序的可观测性。一个关键部分是围绕 DataFusion 构建的,DataFusion 用于查询收集并存储在 Parquet 文件中的可观测性数据。
InfluxDB
InfluxDB 是 InfluxData 开发的开源时间序列数据库。它专为高性能处理带时间戳的数据而设计,广泛用于监控、分析和物联网应用,并支持高写入和查询负载。
InfluxData 是 DataFusion 的早期采用者,DataFusion 是 InfluxDB 3 架构的关键组成部分。选择 DataFusion 是因为它使用 Rust 编写的优势、使用 Arrow 进行内存管理的互操作性优势以及其可扩展性,这使得 InfluxDB 3 能够支持通过 SQL、InfluxQL 和 Flux 进行查询。
OpenObserve
OpenObserve 是一个开源可观测性平台,旨在提供 DataDog 或 Splunk 等工具的替代方案。它提供实时监控、警报和仪表板等功能,以帮助开发人员和运维人员理解和优化他们的应用程序。
OpenObserve 选择 DataFusion 的主要原因是它允许他们直接查询对象存储中的 Parquet 文件,同时保持高性能。这为用户节省了成本,因为它不需要更昂贵的基于磁盘的存储。与其他依赖外部数据库作为存储后端的开源平台相比,它还使 OpenObserve 的部署和管理更容易。
LanceDB
LanceDB 是一个开源向量数据库,支持向量嵌入和用于创建它们的实际数据。与其他向量数据库相比,这允许数据版本控制和更快的检索。
LanceDB 对存储多模态数据的支持归功于其自定义列式数据格式 Lance。LanceDB 利用 DataFusion 来支持跨数据库中存储的所有数据类型的 SQL 查询。
SpiceAI
SpiceAI 是一个开源平台,旨在简化 AI 应用和代理的开发。它提供跨数据湖和数据仓库的查询联合、数据缓存、与所有主要 LLM 提供商 API 兼容的 LLM 网关以及创建语义数据模型的能力等功能。
DataFusion 是 Spice 堆栈的关键部分,使他们能够使用单个 SQL 接口支持查询多个数据源。DataFusion 与 Apache Arrow 的集成还支持他们的加速数据功能,例如本地缓存 RAG 数据以减少 LLM 响应的延迟。Spice 是 DataFusion 的贡献者,并增加了对 Postgres、MySQL、DuckDB 和 SQLite 的查询支持。
Cube
Cube 是一个流行的开源工具,用于为数据应用程序创建语义层,在 Github 上拥有超过 18K 个星标。它聚合来自各种来源的数据,对其进行处理,并提供统一的 API 用于查询和可视化。Cube 旨在处理大型数据集并交付实时洞察,使其适用于构建仪表板和报告。
Cube 选择 DataFusion 来构建下一代数据引擎 Tesseract。DataFusion 优化了 Cube 编译、维护和生成更复杂 SQL 查询的能力,例如期间对比、总计百分比计算、详细级别计算、分桶计算和数据混合。
Arroyo
Arroyo 是一个无服务器、实时流处理框架,允许开发人员以亚秒级延迟处理和分析高容量数据。它为处理高吞吐量数据流提供了可扩展且容错的架构,使其适用于实时分析、监控和事件处理。
Arroyo 在 DataFusion 和 Arrow 之上构建了一个全新的 SQL 引擎,这使他们实现了 3 倍更高的吞吐量、20 倍更快的启动速度,并将他们的 docker 镜像大小缩小了 11 倍。
为什么选择 DataFusion?
正如您从上面的项目中看到的那样,DataFusion 在设计上是通用的,可以跨广泛的用例使用。工程师选择 DataFusion 有很多原因,但以下是一些最常见的原因
- 互操作性 - DataFusion 的最大优势之一是与 Apache Arrow 和 Parquet 的紧密集成。这使得在生态系统内使用现有工具变得容易,并使新用户更容易采用。Comet 提供了 Spark 兼容性和 DataFusion 的性能。
- Rust - 开发人员的另一个卖点是 DataFusion 是用 Rust 编写的。这可以通过避免在 C++ 中编写查询引擎时可能发生的许多内存问题,同时仍然获得出色的性能,从而帮助简化开发。
- 可扩展性 - DataFusion 可以使用自定义查询计划进行扩展,以适应特定的工作负载和数据类型。它还支持用户自定义函数,以添加特定用例所需的 SQL 功能。借助自定义数据源,DataFusion 可用于集成和查询不同的数据格式或存储后端。
您将构建什么?
Apache DataFusion 正在迅速改变数据基础设施格局,使各种规模的项目都能够交付高性能、基于 SQL 的分析,而无需承担从头开始构建查询引擎的负担。通过选择 DataFusion,这些公司可以更快地推向市场,降低开发成本,并获得优于传统系统的性能。
这篇文章中重点介绍的项目展示了 DataFusion 的通用性。无论是查询对象存储中的 Parquet 文件、优化实时分析还是为 AI 驱动的应用程序提供支持,DataFusion 都在不断突破现代数据处理的界限。
凭借其不断增长的开源社区、强大的性能基准以及持续的创新,DataFusion 有望成为下一代数据驱动应用程序的基础。如果您正在构建数据密集型产品,那么现在可能是时候了解 DataFusion 如何增强它了。