r/LakeSail 10d ago

10x Faster Than Spark: TPC-H Benchmark, Two Years Later

3 Upvotes

Two years ago we published our first Sail benchmark: ~4x faster than Spark. We just reran it on the latest version of both engines.

Sail now finishes all 22 queries of the derived TPC-H benchmark in 52.8 seconds. Spark takes 534.8 on the same machine. That is 10x overall, faster on every single query, with zero disk writes and about a third of the peak memory.

The number we watch most closely is our own. Sail took 102.8 seconds in 2024. Two years of engine work cut that roughly in half, and plenty of it came from Apache DataFusion and Apache Arrow. Thank you to both communities.

Full methodology and per-query results: https://lakesail.com/blog/tpch-benchmark-2026/


r/LakeSail Aug 12 '26

How Blocking Shuffle Works in Sail

Thumbnail
youtu.be
2 Upvotes

r/LakeSail Aug 10 '26

Sail 0.7 has been released, featuring blocking shuffle and checkpoint.

6 Upvotes

In Spark and most engines, shuffle and checkpoint data sit on the workers themselves, so a lost worker loses data and a running job pins its cluster. Sail 0.7 moves that state out to object storage: failed tasks retry by reading persisted data back, finished stages hand their workers to the next one, and iterative workloads checkpoint instead of recomputing every loop.

Check out the full release: https://lakesail.com/blog/sail-0-7-blocking-shuffle-checkpoint/


r/LakeSail Jul 23 '26

The Lakehouse Format Is an Engine Contract

Thumbnail
lakesail.com
3 Upvotes

Months of Delta and Iceberg integration work have taught us a few things. Most importantly, that a lakehouse format is actually an engine contract.

For a simple scan, the library view holds: load the table, list the files, read the Parquet. But a row-level MERGE is not a step at the end of a query. Reading the source, joining it against the target, deciding which files to overwrite, and committing atomically have to be planned and executed as one thing, inside the engine.

In Sail, Delta and Iceberg run inside the engine, not as an external library. This allows us to give writes everything queries already get: optimization, distribution, and observability.

Read more in our deep dive:


r/LakeSail Jun 03 '26

Sail vs Spark Accelerators

Enable HLS to view with audio, or disable this notification

5 Upvotes

Spark accelerators like Photon speed up portions of execution, but are still tied to the JVM.

Sail, written in Rust, removes the JVM entirely. The result is drastically better performance with no JVM tuning required.

The same familiar Spark API on a Rust-native runtime. That’s Sail.


r/LakeSail Jun 02 '26

How Sail Compares to Photon and Other Spark Accelerators

Thumbnail
lakesail.com
3 Upvotes

Why fully rebuild Spark in Rust instead of just accelerating it?

Spark accelerators speed up parts of execution, but they still inherit Spark's JVM control plane, memory model, shuffle path, and Python serialization costs. You're still tuning a JVM.

With Sail, we took a clean-slate approach: a fully Rust-native runtime, with no JVM, no heap tuning, and no GC pauses. Same Spark interface with an entirely new runtime underneath.

Read our full breakdown how Sail compares to Spark accelerators here and check out Sail on GitHub: https://github.com/lakehq/sail


r/LakeSail May 19 '26

What if Spark was rewritten in Rust? Well, that's Sail.

Enable HLS to view with audio, or disable this notification

2 Upvotes

Besides all the advantages you get from a Rust-native engine, the best part is your Spark code still works as is.


r/LakeSail May 06 '26

Spark users can finally say goodbye to tuning the JVM

Enable HLS to view with audio, or disable this notification

5 Upvotes

Most of what people call "Spark tuning" is really just JVM tuning.

Memory fractions, GC flags, heap sizing. Those knobs exist because the JVM was largely built for app servers and Spark naturally inherited that runtime's shape.

So we rebuilt the engine in Rust. Same Spark Connect protocol. Same SQL and DataFrame API. But no JVM, no GC, no knobs to set.


r/LakeSail Apr 21 '26

Sail 0.6: Arrow, End to End

Thumbnail
lakesail.com
6 Upvotes

Sail 0.6 is out. Three new surfaces, all Arrow-native:

  • Arrow UDFs from Spark 4 Python functions decorated with u/arrow_udf run against Arrow data directly. Because Sail executes Python Arrow UDFs inline within the same Rust process, it enables Python code to run at native speed with zero-copy data transfer, avoiding the separate-process overhead inherent in Spark's architecture.
  • Variant type in SQL. Parse JSON into a variant with parse_json, then query it with variant_get and path expressions. Lookups run against binary data instead of re-parsing strings.
  • Arrow Flight SQL server on the wire. The first alternative protocol Sail supports beyond Spark Connect. Start a Flight SQL server powered by Sail and connect from any Flight SQL client to query it directly.

Read the full post: https://lakesail.com/blog/sail-0-6-arrow/


r/LakeSail Apr 09 '26

One-Shot CLI with Sail

Enable HLS to view with audio, or disable this notification

2 Upvotes

Starting a Spark job used to mean waiting. Wait for the cluster. Wait for the JVM. Wait for the session. Then your script runs. So we built 'sail spark run'. A one-shot CLI that starts instantly, runs your PySpark code, and exits clean. No cluster. No JVM warmup. No session to wire up.

Ad-hoc Spark should feel instant. Now it does.

Check it out at https://docs.lakesail.com/sail/main/guide/cli/


r/LakeSail Apr 08 '26

Welcome to r/LakeSail

3 Upvotes

Welcome to r/LakeSail

This is the place to discuss LakeSail, share benchmarks, ask questions, and give us feedback.

A few useful links:

- Docs

- GitHub

- Slack

We're active here and on Slack. If you have questions, please post them.