Presto (PrestoDB)
Facebook’s distributed SQL engine, now governed by the Linux Foundation, moving its workers from Java to C++ on Velox. Trino is its 2019 fork.
- What it is
- Query engines
- Type
- Open source
- Made by
- Presto Foundation (Linux Foundation)
- License
- Apache 2.0
- Facts checked
- 6 October 2026
What it is
A Presto cluster has a Java coordinator, which parses, plans and schedules each query, and many workers that read data through connectors and pass intermediate results to each other in memory, stage to stage. Connectors cover Hive Metastore tables, Iceberg, Delta Lake, Hudi, Kafka, MySQL, PostgreSQL and many more, so one query can join a lake table with a live database. Workers come in two kinds. Java workers support every connector and function. Presto C++ workers, developed as Prestissimo, are a drop-in replacement built on Meta’s Velox library: they speak the same REST protocol to the coordinator, need no JVM, and cover the Hive connector (reads and writes), Iceberg (reads only), TPC-H, TPC-DS and JMX. For jobs too big for one cluster’s memory, Presto on Spark runs the same plans as Spark jobs.
Presto is free under Apache 2.0 and governed by the Presto Foundation under the Linux Foundation, whose founding members were Facebook, Alibaba, Twitter and Uber. Releases keep the 0.x numbering: 0.299 came out in August 2026, and the Java processes require Java 17. IBM, which bought the Presto startup Ahana in 2023, sells Presto as an engine in watsonx.data; Amazon EMR offers both PrestoDB and Trino. Amazon Athena started on Presto in 2016, but its engine version 3 is built from Trino.
Why teams pick it
- Interactive SQL across many sources: lake tables in the Hive Metastore or Iceberg, plus operational databases, in one query
- C++ workers on Velox are a drop-in replacement for JVM workers, with the same coordinator and clients
- Presto on Spark runs the same SQL on Spark for very large batch jobs, using Spark’s resource isolation and materialized exchange
- Neutral governance under the Linux Foundation, with Meta, Uber and IBM among the companies running and developing it
Watch out for
- Easy to confuse with Trino: they share a history, but have developed separately since 2019 (different workers, Java versions, fault tolerance and release numbers), and the creators who named Presto now lead Trino
- C++ workers are still in active development: only a few connectors, Iceberg read-only, no custom plugins or user-supplied functions, and some types and functions missing
- For the very largest jobs Presto’s answer is a second system: Presto on Spark needs a Spark cluster plus its own package and launcher
- Managed offerings lag upstream: Amazon EMR 7.14 ships Presto 0.287 while the project is at 0.299
Alternatives
What all query engines have in common →
Amazon AthenaAWSAWS’s serverless SQL engine for data in S3: no cluster to run, and on-demand queries cost $5 per TB scanned.
Apache CalciteOpen sourceA Java framework with everything a database needs to understand a query (SQL parser, validator, relational algebra and a rule-based, cost-based optimizer) but no storage of its own, which Hive, Flink, Druid, Dremio, Beam and many other systems embed as their SQL front end and planner.
Apache ZeppelinOpen sourceA self-hosted web notebook where each paragraph runs through an interpreter: Spark, Flink, JDBC, Python and more. Maintained, but behind Jupyter and Databricks in reach.
GizmoSQLOpen sourceA database server that wraps DuckDB (or SQLite) and serves it to many clients over Arrow Flight SQL, with TLS and authentication.
HotdataCommercialA managed SQL engine for AI agents, built in Rust on Apache DataFusion and Arrow: each agent gets short-lived “instant databases” to load data into, then runs read-only SQL, vector, full-text and geospatial queries over an HTTP API or CLI.
IbisOpen sourceA Python dataframe API that compiles to SQL, so the same code runs on DuckDB on a laptop and on BigQuery, Snowflake, PostgreSQL or more than 20 other engines.
Spice.ai OSSOpen sourceA single-binary SQL engine in Rust, built on DataFusion and Arrow, that federates queries across databases, warehouses and lakes, keeps hot datasets in a local accelerated copy, and adds search and LLM APIs on top.
VeloxOpen sourceMeta’s open-source C++ execution engine library: it takes an already-optimized query plan and runs it with vectorized operators, and it is the engine inside Presto’s C++ workers (Prestissimo) and Apache Gluten’s native Spark.How it fits with other technologies
What Presto (PrestoDB) uses
- Presto (PrestoDB)was forked in 2019 intoTrino
- Presto (PrestoDB)can run queries as jobs onApache Spark
- Presto (PrestoDB)reads and writes tables inApache Iceberg
- Presto (PrestoDB)reads tables inDelta Lake
- Presto (PrestoDB)reads tables inApache Hudi
- Presto (PrestoDB)reads data files fromAmazon S3
- Presto (PrestoDB)was the original engine ofAmazon Athena
- Presto (PrestoDB)can query and join live data inMySQL
A Java coordinator with two Presto C++ (Prestissimo) workers in Docker Compose · yaml
# coordinator/etc/config.properties: coordinator=true, discovery-server.enabled=true,
# node-scheduler.include-coordinator=false, http-server.http.port=8080
# worker-N/etc/config.properties: discovery.uri=http://coordinator:8080,
# http-server.http.port=7777
# (plus node.properties for each node, as in the Presto C++ install guide)
# both: etc/catalog/tpch.properties with connector.name=tpch, tpch.naming=standard
services:
coordinator:
image: prestodb/presto:latest # Java coordinator
hostname: coordinator
ports: ["8080:8080"]
volumes: ["./coordinator/etc:/opt/presto-server/etc:ro"]
worker-1:
image: prestodb/presto-native:latest # C++ worker on Velox, no JVM
hostname: worker-1
depends_on: [coordinator]
volumes: ["./worker-1/etc:/opt/presto-server/etc:ro"]
worker-2:
image: prestodb/presto-native:latest
hostname: worker-2
depends_on: [coordinator]
volumes: ["./worker-2/etc:/opt/presto-server/etc:ro"]
# then: presto-cli --server localhost:8080 --catalog tpch --schema sf1 \
# --execute "SELECT l_returnflag, sum(l_quantity) FROM lineitem GROUP BY 1"Presto or Trino today?#
Both descend from the code Facebook open-sourced in 2013. After the 2019 split they kept similar architectures (a coordinator, workers and connectors) but went separate ways on how workers run and how big jobs survive failures.
| Presto (PrestoDB) | Trino | |
|---|---|---|
| Governed by | Presto Foundation, under the Linux Foundation (founded 2019 by Facebook, Alibaba, Twitter and Uber) | Trino Software Foundation, led by the creators who named Presto |
| Workers | Java, or C++ on Velox (Presto C++, still in active development) | Java only |
| Long or huge batch jobs | Presto on Spark runs queries as Spark jobs | Optional fault-tolerant execution retries tasks or queries with spooled data |
| Java required | Java 17 | Java 25 |
| Latest release | 0.299 (August 2026) | Release 483 (July 2026) |
| Commercial and managed | IBM watsonx.data; Amazon EMR (0.287) | Starburst; Amazon EMR; Amazon Athena engine version 3 |
- Athena engine version 3 says it integrates changes from both Trino and Presto, but it describes its SQL as Trino’s and points to the Trino documentation.
See it in a real stack
No architecture uses Presto (PrestoDB) yet. Drop it into the playground and wire it up yourself.Open playground →Benchmarks
How to read a benchmark →Where it came from2012–2023
In 2012 Facebook’s warehouse held more than 300 petabytes in Hadoop, and analysts queried it through Hive, whose MapReduce jobs were built for throughput, not quick answers. Martin Traverso, Dain Sundstrom, David Phillips and Eric Hwang started Presto that fall as an interactive engine that streams data between stages in memory. It went into production in early 2013 and was open-sourced that November.
In 2018 Facebook wanted tighter control over the project, and the creators left to continue their version as PrestoSQL. In September 2019 Facebook, Alibaba, Twitter and Uber formed the Presto Foundation under the Linux Foundation, which also took the Presto trademark, and in December 2020 PrestoSQL was renamed Trino.
Meta kept investing in Presto: hierarchical caching, Presto on Spark for jobs that need hundreds of terabytes of memory, and Velox, a C++ execution library published in 2022 that became the basis of Presto’s native workers. IBM joined through its 2023 acquisition of Ahana.
Why it’s built this way
- Pipelined, in-memory execution
- Hive’s MapReduce jobs wrote every stage to disk. Streaming data between stages as it is produced made ad-hoc queries interactive.
- Connectors instead of its own storage
- Facebook’s data lived in several systems. A storage plug-in API let one engine query all of them, which is why Presto can join Hive tables with MySQL.
- Run on Spark for the biggest jobs
- Interactive clusters with small memory headroom could not finish huge ETL queries reliably. Presto on Spark keeps Presto’s SQL and planner but borrows Spark’s resource management and materialized shuffles.
- Move execution to a shared C++ library
- Meta had many engines with separate, hard-to-maintain executors. Velox gives Presto, Spark and other systems one vectorized engine, and lets workers drop the JVM.
Timeline
- 2012
Presto started at Facebook in the fall
- 2013
In production early in the year; open-sourced in November
- 2019
Presto Foundation forms under the Linux Foundation in September
- 2020
The creators’ fork, PrestoSQL, is renamed Trino in December
- 2022
Meta publishes Velox, the C++ library behind Presto’s native workers
- 2023
IBM acquires Ahana and joins the Presto Foundation
- Engineering at Meta: Presto, interacting with petabytes of data at Facebook (Nov 2013)
- Linux Foundation: Facebook, Uber, Twitter and Alibaba form Presto Foundation (September 23, 2019)
- Trino blog: We’re rebranding PrestoSQL as Trino (Dec 2020)
- Meta Research: Presto, a decade of SQL analytics at Meta (SIGMOD 2023) · archived copy, original
- Pedreira et al.: Velox, Meta’s unified execution engine (VLDB 2022)
- Presto blog: IBM joins the Presto Foundation through acquisition of Ahana (April 2023)
Sources19 · facts checked 6 October 2026
- Presto docs: Concepts (coordinator, workers, stages)
- Presto docs: Connectors
- Presto docs: Iceberg connector (UPDATE and MERGE)
- Presto docs: Presto C++ (Prestissimo, Velox, supported connectors)
- Presto docs: Presto C++ limitations
- Presto docs: Presto C++ installation with Docker Compose
- Presto docs: Presto on Spark
- Presto docs: Deploying Presto (requires Java 17)
- Presto releases on GitHub (0.299, August 28, 2026)
- Presto home page (Linux Foundation governance)
- Presto blog: Presto now hosted under the Linux Foundation (September 2019)
- IBM watsonx.data (Presto engine)
- Amazon EMR docs: Presto (emr-7.14.0 ships Presto 0.287; Trino since 6.1.0)
- Athena docs: Engine version 3 (Trino and Presto integration, Trino SQL)
- AWS What’s New: Amazon Athena announces upgraded query engine (Oct 2022)
- Trino docs: Deploying Trino (Java 25)
- Trino docs: Fault-tolerant execution
- Trino release notes (Release 483, July 17, 2026)
- Starburst docs: Introduction (products built on Trino)