用 Rust 编写的 Apache Spark 直接替代品,无需改写代码即可运行现有 PySpark 程序。
apache/datafusion-comet
一个 Spark 加速器,基于 DataFusion 与 Arrow 列式执行,无需修改代码即可加速 Spark 查询。
- Star
- 1,315
- Fork
- 413
- 未关闭 Issue
- 867
- 最近提交
- 17小时前
这是什么?
Apache DataFusion Comet 是一个面向 Apache Spark 的查询加速器。它用直接处理 Apache Arrow 列式数据的实现替换 Spark 的算子和表达式,从而避开 Spark 传统行式执行引擎的逐行开销。大部分算子以基于 Apache DataFusion 的原生 Rust 代码运行,其余算子则在 JVM 中对 Arrow 批次进行处理。
Comet 覆盖 Parquet 扫描(包括从 Spark 读取的 Iceberg 表)、支持哈希与范围分区的 Arrow-IPC 列式 shuffle、哈希连接、排序合并连接和广播连接、哈希聚合,以及大量 Spark 表达式。它支持 Spark 3.4、3.5、4.0、4.1 和 4.2,安装时只需将对应版本的 jar 加入 Spark classpath 并启用插件。
该项目适用于已有的 Spark SQL、DataFrame 和 PySpark 作业,希望在相同硬件上获得更快的执行速度,且无需 GPU 或其他专用加速器。
核心功能
- 01基于 Apache DataFusion 以原生 Rust 执行 Spark 算子与表达式
- 02原生 Parquet 扫描,并加速从 Spark 读取 Iceberg 表
- 03支持哈希与范围分区的 Arrow-IPC 列式 shuffle
- 04支持哈希连接、排序合并连接和广播连接
- 05通过全阶段代码生成,让 Scala/Java 标量 UDF 保留在 Comet 执行链路中
- 06现有 Spark SQL、DataFrame 和 PySpark 代码无需修改
适用场景
- 降低现有 Spark SQL 与 ETL 作业在云端或本地集群上的资源成本
- 加速基于 Parquet 或 Iceberg 数据湖的 Spark 查询
- 在通用 CPU 集群上运行 TPC-DS 等大型分析负载
标签
常见问题
- datafusion-comet 是什么?
- 一个 Spark 加速器,基于 DataFusion 与 Arrow 列式执行,无需修改代码即可加速 Spark 查询。 Apache DataFusion Comet 是一个面向 Apache Spark 的查询加速器。它用直接处理 Apache Arrow 列式数据的实现替换 Spark 的算子和表达式,从而避开 Spark 传统行式执行引擎的逐行开销。大部分算子以基于 Apache DataFusion 的原生 Rust 代码运行,其余算子则在 JVM 中对 Arrow 批次进行处理。
- datafusion-comet 可以免费使用吗?用的什么许可证?
- datafusion-comet 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
- datafusion-comet 还在维护吗?
- 活跃维护中。datafusion-comet 最近一次提交是在 2026年11月6日。
- datafusion-comet 适合用来做什么?
- 降低现有 Spark SQL 与 ETL 作业在云端或本地集群上的资源成本 加速基于 Parquet 或 Iceberg 数据湖的 Spark 查询 在通用 CPU 集群上运行 TPC-DS 等大型分析负载
- 在哪里获取 datafusion-comet?
- 源代码和安装说明在 GitHub 上:https://github.com/apache/datafusion-comet
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
用 Rust 编写的高速 DataFrame 查询引擎,支持 Python、Node.js、R、Rust 和 SQL。
一个 Python 库,把 Xarray 数组数据转换为表,从而用 SQL 直接查询,可对接 DuckDB、Polars 等引擎。
面向日志、链路追踪、指标和事件的时序数据库,数据以 Delta Lake 表存于 S3,并通过 PostgreSQL 协议查询。
基于 Python 与 Rust 构建的高性能数据引擎,用于大规模处理图像、音视频、向量与结构化数据。
一门免费的 9 周在线课程,通过从零搭建端到端数据管道来讲授数据工程基础。