mcpField
S
Sail MCP Server for Spark SQL

Sail MCP Server for Spark SQL

本地服务
lakesail.com数据库3.5k今天更新

关于 Sail MCP Server for Spark SQL

Sail 是用 Rust 编写的 Apache Spark 直接替代品,统一批处理、流处理和计算密集型 AI 工作负载。面向希望在不改写 PySpark 代码的情况下降低成本的数据工程师。

主要功能

  1. 01兼容 Spark Connect 协议
  2. 02支持 Spark SQL 与 DataFrame API
  3. 03无 JVM 依赖的 Rust 原生引擎
  4. 04支持 Delta Lake 与 Apache Iceberg
  5. 05基于 Apache Arrow 的列式执行

适用场景

  1. 01在不改写代码的前提下将 PySpark 作业迁移到 Sail
  2. 02在 Kubernetes 集群模式下运行分布式数据处理
  3. 03使用 Python UDF 进行数据分析

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Sail

Build Status Codecov PyPI Release Static Slack Badge

Sail 是一个用 Rust 编写的 可直接替换 Apache Spark 的方案,通过分布式多模态计算引擎,统一批处理、流处理和计算密集型 AI 工作负载。

  • 与 Spark Connect 协议 兼容,支持 Spark SQL 和 DataFrame API,无需重写代码。
  • 100% 原生 Rust,没有 JVM 开销,提供内存安全、即时启动和可预测的性能。
  • 速度比 Spark 快约 10 倍,基础设施成本 降低 98%。参见 衍生 TPC-H 基准测试。
  • 在 ClickBench 上经受验证,性能胜过 Spark、热门 Spark 加速器、Databricks 和 Snowflake。

文档

最新版本 Sail 的文档可在此处查看。

安装

快速入门

Sail 可作为 Python 软件包在 PyPI 上获取。你可以在 Python 环境中将其与 PySpark 一起安装。

pip install pysail
pip install "pyspark-client"
高级用例

你可以从源代码安装 Sail,以针对特定硬件架构优化性能。详细的安装指南会逐步指导你完成此过程。

如果需要在生产环境中部署 Sail,部署指南提供了在 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 进行分布式处理。 请参阅 Kubernetes 部署指南,了解如何构建 Docker 镜像和编写 Kubernetes 清单 YAML 文件。

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()

更多详情请参阅入门指南。

Spark 兼容性

Sail 旨在兼容 Spark 3.5.x、Spark 4.x 及更高版本。将 Spark 客户端会话通过 Spark Connect 协议连接到 Sail 后,现有 PySpark 代码即可直接运行。

作为入门参考,Sail 提供了一个 实验性 的 PySpark 函数兼容性检查脚本,用于扫描代码库中的 PySpark 函数,并报告 Sail 对这些函数的支持状态。

python -m pysail.examples.spark.compatibility_check <directory>

实验性 请仅将此脚本用于初步粗略检查。脚本会检查 Sail 是否_实现_了代码中引用的 PySpark 函数,但不会验证行为是否一致。它会查找 DataFrame 操作中使用的函数,但不涵盖 Spark SQL 字符串。

推荐的迁移实践请参阅迁移指南。

功能亮点

Lakehouse 格式和目录提供方

Sail 原生支持 Delta Lake 和 Apache Iceberg 表格式。 它集成了多种目录提供方,包括 Apache Iceberg REST Catalog、AWS Glue、Unity Catalog、Hive Metastore 和 Microsoft OneLake。

有关用法和最佳实践的更多详情,请参阅数据源指南和目录指南。

存储

Sail 支持多种存储后端,用于读取和写入数据,包括:

  • AWS S3
  • Azure
  • Hugging Face
  • Cloudflare R2
  • Google Cloud Storage
  • HDFS
  • 文件系统
  • HTTP/HTTPS
  • 内存存储

更多详情请参阅存储指南。

为什么选择 Sail?

15 年来,Spark 一直是分布式数据处理的默认引擎,为几乎所有行业中的 ETL、机器学习和分析工作流提供支持。

但让 Spark 成为可能的 JVM 基础,如今也成了它发展的阻碍。Sail 旨在成为一个熟悉且高性能的替代方案,同时免去 JVM 带来的开销。

Sail 与 Spark 兼容

Sail 可直接替代 Spark SQL 和 Spark DataFrame API。将 Spark 客户端会话通过 Spark Connect 协议连接到 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 内存,内存占用低。
  • 列式格式和向量化执行。 Sail 基于 Apache Arrow 和 Apache DataFusion 构建,列式内存格式和 SIMD 指令可实现极快的查询执行速度。
  • 闪电般快速的 Python UDF。 通过 Arrow 数组指针实现零拷贝数据共享,Python 代码可在 Sail 内运行,且没有序列化开销。
  • 高性能数据洗牌。 工作节点直接交换 Arrow 列式数据,最大限度地降低连接和聚合操作的洗牌成本。
  • 轻量、无状态的工作节点。 工作节点数秒内即可启动,空闲时仅占用几 MB 内存,并可弹性扩展,从而降低云成本、简化运维。
  • 值得信赖的并发性和内存安全性。 Rust 的所有权模型可防止空指针、竞态条件和不安全的内存访问,带来无与伦比的可靠性。

准备好迁移现有工作负载了吗?我们的迁移指南将为你介绍具体方法。

基准测试结果

衍生 TPC-H 结果表明,Sail 在所有查询中均优于 Apache Spark:

  • 执行时间:在各种 SQL 工作负载中,速度约快 10 倍。
  • 硬件成本:降低 98%,峰值内存使用量显著降低,且没有产生任何 shuffle 溢写。
指标SparkSail
查询总时间534.78 s52.81 s
查询加速比基线176% – 2819%
峰值内存使用量72 GB26 GB
磁盘写入(Shuffle 溢写)115 GB0 GB

这些结果来自在 AWS r8g.4xlarge 实例上运行的衍生 TPC-H 基准测试(22 个查询、规模因子 100、Parquet 格式)。

查询时间对比

请访问我们的基准测试结果页面,查看完整分析和图表。

延伸阅读

  • 架构 – 概述 Sail 在本地模式和集群模式下的设计,以及如何在两种模式之间无缝切换。
  • 查询规划 – 详细说明 Sail 如何解析 SQL 和 Spark 关系、构建逻辑计划和物理计划,以及如何处理本地模式和集群模式下的执行。
  • SQL 和 DataFrame 功能 – Spark SQL 和 DataFrame API 兼容性的完整参考。
  • LakeSail 博客 – Sail 版本更新、基准测试和技术见解。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。