A Spark accelerator that runs Spark SQL and DataFrame operators on Apache Arrow columnar data via a Rust engine built on DataFusion, with no code changes.
lakehq/sail
A drop-in Apache Spark replacement written in Rust that runs existing PySpark code over the Spark Connect protocol.
Open-source alternative to:Databricks
- Stars
- 3,488
- Forks
- 240
- Open issues
- 294
- Last commit
- 20 hours ago
What is it?
Sail is a distributed compute engine that stands in for Apache Spark. Clients connect to it using the Spark Connect protocol, so existing PySpark DataFrame and Spark SQL code can run against Sail without modification. It is written entirely in Rust and does not depend on the JVM.
Sail is built on Apache Arrow and Apache DataFusion, using a columnar in-memory format and vectorized execution. It covers batch processing, stream processing, and Python UDF, UDAF, UDWF, and UDTF workloads. It can run as a local server started from the sail command or the pysail Python package, or in cluster mode on Kubernetes.
For data access, Sail provides native support for Delta Lake and Apache Iceberg tables and integrates with catalogs such as Iceberg REST, AWS Glue, Unity Catalog, and Hive Metastore. It reads and writes data from S3, Azure, Google Cloud Storage, HDFS, Cloudflare R2, HTTP, and local file systems. A compatibility check script is included as an experimental aid for finding PySpark functions that Sail does not yet implement.
Key features
- 01Speaks the Spark Connect protocol, so PySpark clients connect without code changes.
- 02Supports Spark SQL and the Spark DataFrame API, including Python UDF, UDAF, UDWF, and UDTF.
- 03Native read and write support for Delta Lake and Apache Iceberg tables.
- 04Integrates with Iceberg REST, AWS Glue, Unity Catalog, and Hive Metastore catalogs.
- 05Runs without the JVM, built on Apache Arrow and DataFusion.
- 06Deployable as a local server or as a cluster on Kubernetes.
Use cases
- Moving existing PySpark ETL jobs to a lighter-weight engine without rewriting code.
- Running batch analytics on Delta Lake or Iceberg tables stored in S3 or Azure.
- Reducing cluster cost and startup time for Spark-style workloads on Kubernetes.
- Developing and testing Spark code locally with a single-command server.
Quick start
- 1
Install Sail from PyPI
pip install pysail - 2
Install PySpark client
pip install "pyspark-client" - 3
Start the local Sail server
sail spark server --port 50051 - 4
Connect PySpark to the server at sc://localhost:50051 and run your code unchanged
Things to know
- The PySpark compatibility check script is experimental and does not verify behavioral parity with Spark.
- Production deployment on Kubernetes requires building a Docker image and writing manifests.
In collections
Topics
FAQ
- What is sail?
- A drop-in Apache Spark replacement written in Rust that runs existing PySpark code over the Spark Connect protocol. Sail is a distributed compute engine that stands in for Apache Spark. Clients connect to it using the Spark Connect protocol, so existing PySpark DataFrame and Spark SQL code can run against Sail without modification. It is written entirely in Rust and does not depend on the JVM.
- Is sail free to use? What license does it have?
- sail is open source under the Apache-2.0 license. Check the license terms before using it in commercial products.
- Is sail still maintained?
- Actively maintained. The last commit to sail was on Nov 6, 2026.
- What can I use sail for?
- Moving existing PySpark ETL jobs to a lighter-weight engine without rewriting code. Running batch analytics on Delta Lake or Iceberg tables stored in S3 or Azure. Reducing cluster cost and startup time for Spark-style workloads on Kubernetes. Developing and testing Spark code locally with a single-command server.
- How do I install sail?
- Install Sail from PyPI: pip install pysail Install PySpark client: pip install "pyspark-client" Start the local Sail server: sail spark server --port 50051 Connect PySpark to the server at sc://localhost:50051 and run your code unchanged
- Where can I get sail?
- The source code and installation instructions are on GitHub: https://github.com/lakehq/sail
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A curated, link-heavy handbook collecting books, communities, courses, tools, blogs and learning resources for data engineering.
A unified analytics engine for large-scale data processing, with APIs in Scala, Java, Python and R.
Code samples, tutorials and utilities for building ETL jobs and data integration pipelines on AWS Glue.
A native Rust library for reading and writing Delta Lake tables, with Python bindings for use with pandas and other data tools.
PySpark helper functions for DataFrame validation, column transformations, and schema utilities to speed up Spark development.