lakehq/sail

GitHub: lakehq/sail

一个基于 Rust 的统一分布式多模态计算框架,通过兼容 Spark 协议实现批处理、流处理和 AI 工作负载的高效统一执行。

Stars: 1253 | Forks: 83

# Sail [![构建状态](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/d68bdfb8ef232312.svg)](https://github.com/lakehq/sail/actions) [![Codecov](https://codecov.io/gh/lakehq/sail/graph/badge.svg)](https://app.codecov.io/gh/lakehq/sail) [![PyPI 发布版本](https://img.shields.io/pypi/v/pysail)](https://pypi.org/project/pysail/) [![Static Slack 徽章](https://img.shields.io/badge/slack-LakeSail_Community-3762E0?logo=slack)](https://www.launchpass.com/lakesail-community/free) Sail 是一个由 [LakeSail](https://lakesail.com/) 创建的开源**统一分布式多模态计算框架**。 我们的使命是**统一批处理、流处理和计算密集型 AI 工作负载**。Sail 是一个具备以下特点的计算引擎: - **兼容** Spark Connect 协议,支持 Spark SQL 和 DataFrame API,无需重写代码。 - 在基准测试中比 Spark **快约 4 倍**(在特定工作负载中最高可达 8 倍)。 - 基础设施成本**降低 94%**。 - **100% Rust 原生**实现,无 JVM 开销,提供内存安全性、即时启动和可预测的性能。 **🚀 Sail 在 [ClickBench](https://go.lakesail.com/clickbench) 上的表现优于 Spark、主流 Spark 加速器、Databricks 和 Snowflake。** **💬 [加入我们的 Slack 社区](https://www.launchpass.com/lakesail-community/free)** 以提问、分享反馈,并与其他 Sail 用户和贡献者交流。 ## 文档 最新版本的 Sail 文档可以在[这里](https://docs.lakesail.com/sail/latest/)找到。 ## 安装说明 ### 快速开始 Sail 已作为 Python 包发布在 PyPI 上。您可以在 Python 环境中将其与 PySpark 一起安装。 ``` pip install pysail pip install "pyspark[connect]" ``` 或者,由于 Spark 4.0 的发布,您可以安装轻量级客户端包 `pyspark-client`。 与 `pyspark[connect]` 等效的 `pyspark-connect` 包也已支持 Spark 4.0。 ### 进阶使用场景 您可以从源代码安装 Sail,以针对您的特定硬件架构优化性能。详细的[安装指南](https://docs.lakesail.com/sail/latest/introduction/installation/)将逐步引导您完成此过程。 如果您需要在生产环境中部署 Sail,[部署指南](https://docs.lakesail.com/sail/latest/guide/deployment/)提供了在 Kubernetes 集群和其他基础设施配置上部署 Sail 的全面说明。 ## 入门指南 ### 启动 Sail 服务器 **选项 1:命令行界面。** 您可以使用 `sail` 命令启动本地 Sail 服务器。 ``` sail spark server --port 50051 ``` **选项 2:Python API。** 您可以使用 Python API 启动本地 Sail 服务器。 ``` from pysail.spark import SparkConnectServer server = SparkConnectServer(port=50051) server.start(background=False) ``` **选项 3:Kubernetes。** 您可以在 Kubernetes 上部署 Sail,并以集群模式运行 Sail 进行分布式处理。 有关构建 Docker 镜像和编写 Kubernetes 清单 YAML 文件的说明,请参阅 [Kubernetes 部署指南](https://docs.lakesail.com/sail/latest/guide/deployment/kubernetes.html)。 ``` kubectl apply -f sail.yaml kubectl -n sail port-forward service/sail-spark-server 50051:50051 ``` ### 连接到 Sail 服务器 一旦 Sail 服务器运行起来,您就可以在 PySpark 中连接到它。 您的 PySpark 代码无需任何修改! ``` from pyspark.sql import SparkSession spark = SparkSession.builder.remote("sc://localhost:50051").getOrCreate() spark.sql("SELECT 1 + 1").show() ``` 请参阅[入门指南](https://docs.lakesail.com/sail/latest/introduction/getting-started/)了解更多详情。 ## 核心特性 ### 存储 Sail 支持多种用于读写数据的存储后端。您可以在我们的[存储指南](https://docs.lakesail.com/sail/latest/guide/storage/)中了解更多详情。 以下是支持的存储选项: - AWS S3 - Cloudflare R2 - Azure - Google Cloud Storage - Hugging Face - HDFS - 文件系统 - HTTP/HTTPS - 内存存储 ### 湖仓格式 Sail 为现代湖仓表格式提供了原生支持,提供具有强大数据管理保证的可靠存储层,并确保与现有数据集的互操作性。 有关支持的格式,请参阅以下指南: - [Delta Lake 指南](https://docs.lakesail.com/sail/latest/guide/formats/delta.html) - [Apache Iceberg 指南](https://docs.lakesail.com/sail/latest/guide/formats/iceberg.html) ### Catalog 提供商 Sail 支持多种 Catalog 提供商,例如 Apache Iceberg REST Catalog 和 Unity Catalog。您可以将数据集作为外部表进行管理,并与更广泛的数据平台生态系统集成。 有关使用方法和最佳实践的更多详情,请参阅 [Catalog 指南](https://docs.lakesail.com/sail/latest/guide/catalog/)。 ## 基准测试结果 衍生 TPC-H 结果表明,Sail 在每一项查询中的表现均优于 Apache Spark: - **执行时间**:在各种 SQL 工作负载中快约 4 倍。 - **硬件成本**:降低 94%,峰值内存使用量显著降低,且零 Shuffle 溢写。 | 指标 | Spark | Sail | | -------------------------- | -------- | --------------- | | 总查询时间 | 387.36 s | **102.75 s** | | 查询加速 | 基线 | **43% – 727%** | | 峰值内存使用量 | 54 GB | **22 GB (1 s)** | | 磁盘写入 (Shuffle 溢写) | > 110 GB | **0 GB** | 这些结果来自在 AWS `r8g.4xlarge` 实例上进行的衍生 TPC-H 基准测试(22 项查询,比例因子 100,Parquet 格式)。 ![查询时间比较](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/3fe14c60b8232314.svg) 请在我们的[基准测试结果](https://docs.lakesail.com/sail/latest/introduction/benchmark-results/)页面上查看完整的分析和图表。 ## 为什么选择 Sail? 15 年多前 Spark 诞生时,它具有革命性意义。它重新定义了分布式数据处理,并驱动了各行各业的 ETL、机器学习和分析流水线。 但是,Spark 基于 JVM 的架构如今已难以满足现代对性能和云效率的需求: - **垃圾回收停顿**会导致延迟峰值。 - **序列化开销**拖慢了 JVM 和 Python 之间的数据交换。 - **笨重的执行器**推高了云成本,并使扩展变得复杂。 - **基于行的处理**在分析工作负载上表现不佳,未能充分利用硬件效率。 - **缓慢的启动**延迟了工作负载,影响了交互式和按需使用场景。 Sail 通过现代的、Rust 原生设计解决了这些问题。 ### Sail 兼容 Spark Sail 提供了对 Spark SQL 和 Spark DataFrame API 的无缝替代方案。一旦您通过 Spark Connect 协议将 Spark 客户端会话连接到 Sail,现有的 PySpark 代码即可直接运行。 - **Spark SQL 方言支持。** 一个定制的 Rust 解析器(使用解析器组合子和 Rust 过程宏构建)以生产级的精度覆盖了 Spark SQL 语法。 - **DataFrame API 支持。** Spark DataFrame 操作在 Sail 上以完全相同的语义运行。 - **Python UDF、UDAF、UDWF 和 UDTF 支持。** Python、Pandas 和 Arrow UDF 均遵循与 Spark 相同的约定。 ### Sail 相对于 Spark 的优势 - **Rust 原生引擎。** 无垃圾回收停顿,无需 JVM 内存调优,且内存占用低。 - **列式格式与向量化执行。** 基于 [Apache Arrow](https://github.com/apache/arrow) 和 [Apache DataFusion](https://github.com/apache/datafusion) 构建,列式内存格式和 SIMD 指令解锁了极速查询执行。 - **闪电般的 Python UDF。** Python 代码在 Sail 内部运行,具有零序列化开销,因为 Arrow 数组指针实现了零拷贝数据共享。 - **高性能数据 Shuffle。** Worker 直接交换 Arrow 列式数据,最大限度地降低了 Join 和聚合操作中的 Shuffle 成本。 - **轻量级、无状态 Worker。** Worker 在几秒钟内启动,空闲时仅消耗几兆内存,并可弹性扩展以降低云成本并简化运维。 - **值得信赖的并发与内存安全。** Rust 的所有权模型可防止空指针、竞态条件和 unsafe 内存访问,提供无与伦比的可靠性。 想知道 Sail 与 Spark 相比表现如何?请浏览我们的 [为什么选择 Sail?](https://lakesail.com/why-sail/) 页面。准备好迁移您现有的工作负载了吗?我们的[迁移指南](https://docs.lakesail.com/sail/latest/introduction/migrating-from-spark/)将向您展示如何操作。 ## 延伸阅读 - [架构](https://docs.lakesail.com/sail/latest/concepts/architecture/) – 概述 Sail 在本地和集群模式下的设计,以及它如何在两者之间无缝切换。 - [查询计划](https://docs.lakesail.com/sail/latest/concepts/query-planning/) – 详细解释 Sail 如何解析 SQL 和 Spark 关系,构建逻辑和物理计划,并处理本地和集群模式下的执行。 - [SQL](https://docs.lakesail.com/sail/latest/guide/sql/) 和 [DataFrame](https://docs.lakesail.com/sail/latest/guide/dataframe/) 功能 – Spark SQL 和 DataFrame API 兼容性的完整参考。 - [LakeSail 博客](https://lakesail.com/blog/) – 关于 Sail 版本发布、基准测试和技术洞察的最新动态。 **✨正在使用 Sail?[分享您的故事](https://lakesail.com/share-story/)并获取免费周边!✨**
标签:AI工作负载, ClickBench基准测试, Databricks替代, DataFrame API, LakeSail, Python包, Rust-native, Rust实现, Snowflake替代, Spark Connect协议, Spark SQL, Spark兼容, 代码示例, 内存安全, 分布式计算框架, 可视化界面, 大数据计算, 子域名突变, 开源框架, 恶意软件检测, 批处理, 持续集成, 数据分析, 无JVM开销, 替代Spark, 流处理, 统一计算引擎, 逆向工具, 通知系统, 降低基础设施成本, 高性能计算