Batch ETL and ELT
Python and SQL jobs that run your Spark code as it is.
Run the Spark workloads you already have. Build the AI data pipelines you need next.
| Job Version | Trigger | Status | Duration | Start Time |
|---|---|---|---|---|
| v7 | Schedule for Nov 3, 02:00 AM | Running | 3m 52s | Nov 3, 02:00 AM |
| v7 | Schedule for Nov 2, 02:00 AM | Succeeded | 4m 12s | Nov 2, 02:00 AM |
| v7 | Manual | Succeeded | 4m 31s | Nov 1, 09:14 AM |
| v6 | Schedule for Nov 1, 02:00 AM | Failed | 51s | Nov 1, 02:00 AM |
Coverage
Lakehouse pipelines, scheduling, and analytics on one engine, with the Spark APIs your team already uses.
Python and SQL jobs that run your Spark code as it is.
Delta Lake and Iceberg, built into the engine.
Sail reads and writes Amazon S3, Azure Data Lake Storage, Google Cloud Storage, and HDFS.
Cron schedules, automatic restarts, and alerts.
0 2 * * *daily, 02:00 UTCExampleRun with parameters, catch up missed runs, or retry.
Keep them. They can start and watch jobs through the API.
Console notebooks, or Spark Connect from your own client.
Spark compatibility
Sail speaks Spark Connect. Any difference from Spark’s behavior is treated as a bug.
The job runs as written. LakeSail points the session at Sail for you.
SPARK_REMOTEset for you by LakeSail.remote("sc://localhost:50051") to the session line.Paste a file, or run spark-to-sail scan on a repo.
Scan the job, compare the output, then schedule it.
Migrating from SparkConnect Unity Catalog, recreate your jobs, and swap out dbutils.
Databricks migration guideThey run the comparison with you under the Spark migration guarantee.
The guaranteeProduction
Explore in a notebook, run it as a job, and let LakeSail run it on a schedule, with alerts when a run fails.
Write Spark SQL and DataFrame code against your tables, in the console.
Run the notebook, a Python file, or SQL as a job.
Cron schedules, automatic restarts, run history, and alerts.
0 2 * * *UTCOpen tables
Delta Lake and Iceberg are built into the Sail engine, with no extra jars. Tables stay in your object storage, registered in your catalog, in standard formats other engines read too.
All formats, catalogs and storageMERGEUPDATEDELETEtime travelschema evolutionPerformance
On derived TPC-H, Sail finished in a tenth of Spark’s time on the same machine. On derived TPC-DS, it ran the 1 TB and 3 TB suites on eight workers.
Sail against Spark. Methodology
Different hardware and methods. Not a controlled head-to-head comparison. Derived from TPC-DS, not officially audited. LakeSail blog · AWS, 1 TB · AWS, 3 TB
Sessions
Set one URL and work from your laptop, or hand the same session to your coding agent.
$ export SPARK_REMOTE="sc://…/;token=…" How sessions work What comes next
Add model steps to the Spark jobs you already run. Python runs inside the Sail engine, so a model call works on the same batches as your SQL, with no second process.
The Spark job you run today
spark.read.parquet(…) From your object storage.dropDuplicates() DataFrame codeMERGE INTO products Delta Lake or IcebergTwo more steps
.mapInArrow(embed, …) Your model, in Pythonvector_cosine_similarity In SQLAll in one Sail engine
Agents
Give your agent a personal access token. Through the LakeSail API it can create jobs, run them, and watch them.
API referenceGetting started
Sign up with your email.
VerifiedDeploy the LakeSail setup template.
ConnectedLakeSail provisions both.
ReadyRun SQL, Python, or a notebook.
SucceededWhere it runs LakeSail hosts the console and API. Compute and data stay in your environment.
Start with one job you run today. Compare the output, then move the rest.