Repolode
lakehq

lakehq/sail

用 Rust 编写的 Apache Spark 直接替代品,无需改写代码即可运行现有 PySpark 程序。

可替代:Databricks

Star
3,488
Fork
240
未关闭 Issue
294
最近提交
5小时前

这是什么?

Sail 是一个分布式计算引擎,可以替代 Apache Spark。客户端通过 Spark Connect 协议连接 Sail,现有的 PySpark DataFrame 与 Spark SQL 代码无需修改即可运行。项目完全使用 Rust 编写,不依赖 JVM。

Sail 基于 Apache Arrow 和 Apache DataFusion 构建,采用列式内存格式与向量化执行。它支持批处理、流处理,以及 Python UDF、UDAF、UDWF、UDTF 等工作负载。既可以通过 sail 命令或 pysail Python 包启动本地服务,也可以在 Kubernetes 上以集群模式部署。

在数据访问方面,Sail 原生支持 Delta Lake 与 Apache Iceberg 表格式,并可对接 Iceberg REST、AWS Glue、Unity Catalog、Hive Metastore 等目录服务。它能读写 S3、Azure、Google Cloud Storage、HDFS、Cloudflare R2、HTTP 以及本地文件系统中的数据。项目还附带一个实验性的兼容性检查脚本,用于查找 Sail 尚未实现的 PySpark 函数。

核心功能

  • 01兼容 Spark Connect 协议,PySpark 客户端无需修改代码即可连接。
  • 02支持 Spark SQL 与 Spark DataFrame API,包括 Python UDF、UDAF、UDWF 和 UDTF。
  • 03原生支持读写 Delta Lake 与 Apache Iceberg 表。
  • 04可对接 Iceberg REST、AWS Glue、Unity Catalog、Hive Metastore 等目录服务。
  • 05基于 Apache Arrow 和 DataFusion,不依赖 JVM。
  • 06既可作为本地服务运行,也可在 Kubernetes 上以集群方式部署。

适用场景

  • 在不改写代码的前提下,将现有 PySpark ETL 作业迁移到更轻量的引擎。
  • 对存放在 S3 或 Azure 上的 Delta Lake、Iceberg 表进行批量分析。
  • 在 Kubernetes 上降低 Spark 类工作负载的集群成本与启动时间。
  • 通过单条命令启动本地服务,在本地开发和测试 Spark 代码。

快速上手

  1. 1

    从 PyPI 安装 Sail

    pip install pysail
  2. 2

    安装 PySpark 客户端

    pip install "pyspark-client"
  3. 3

    启动本地 Sail 服务器

    sail spark server --port 50051
  4. 4

    将 PySpark 连接到 sc://localhost:50051 并保持代码不变运行

使用前须知

  • PySpark 兼容性检查脚本处于实验阶段,不验证与 Spark 的行为一致性。
  • 在 Kubernetes 上部署生产环境需要自行构建 Docker 镜像并编写清单文件。

收录于专题

标签

常见问题

sail 是什么?
用 Rust 编写的 Apache Spark 直接替代品,无需改写代码即可运行现有 PySpark 程序。 Sail 是一个分布式计算引擎,可以替代 Apache Spark。客户端通过 Spark Connect 协议连接 Sail,现有的 PySpark DataFrame 与 Spark SQL 代码无需修改即可运行。项目完全使用 Rust 编写,不依赖 JVM。
sail 可以免费使用吗?用的什么许可证?
sail 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
sail 还在维护吗?
活跃维护中。sail 最近一次提交是在 2026年11月7日。
sail 适合用来做什么?
在不改写代码的前提下,将现有 PySpark ETL 作业迁移到更轻量的引擎。 对存放在 S3 或 Azure 上的 Delta Lake、Iceberg 表进行批量分析。 在 Kubernetes 上降低 Spark 类工作负载的集群成本与启动时间。 通过单条命令启动本地服务,在本地开发和测试 Spark 代码。
sail 怎么安装和运行?
从 PyPI 安装 Sail: pip install pysail 安装 PySpark 客户端: pip install "pyspark-client" 启动本地 Sail 服务器: sail spark server --port 50051 将 PySpark 连接到 sc://localhost:50051 并保持代码不变运行
在哪里获取 sail?
源代码和安装说明在 GitHub 上:https://github.com/lakehq/sail

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目