Cloud Parts

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 Arrow AceroExperimentalOpen sourceThe streaming execution engine inside Arrow’s C++ library: you hand it an exact plan of nodes (scan, filter, project, aggregate, join, sort) and it streams Arrow record batches through them, with no SQL parser or optimizer of its own.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 DataFusionOpen sourceA query engine library in Rust, built on Arrow, that other projects embed and extend to build their own databases and data tools.+1 Apache DataFusion CometApache HadoopOpen sourceThe project that made big-data clusters normal: a distributed file system (HDFS), a cluster scheduler (YARN) and the MapReduce engine.Apache HiveOpen sourceThe first SQL engine for Hadoop, and the source of the Hive Metastore, the table catalog that Trino, Spark, Impala and Flink still read.Apache ImpalaOpen sourceAn MPP SQL engine in C++ for interactive queries over Hive tables on HDFS, Kudu, Iceberg and object storage; built and mainly sold by Cloudera.Apache PigDormantOpen sourceA step-by-step scripting language, Pig Latin, that compiles to MapReduce, Tez or Spark jobs on Hadoop. Still released, but the project calls itself dormant.Apache SparkOpen sourceThe general-purpose distributed engine for large batch jobs, streaming and machine learning, in Python, SQL, Scala, Java or R.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.chDBOpen sourceThe ClickHouse engine packaged as a library: run ClickHouse SQL inside a Python, Go, Rust or Node.js program, with no server.Cloudflare Basin SQLRenamedCommercialCloudflare’s serverless, distributed SQL engine for Apache Iceberg tables in Basin Catalog on R2, called R2 SQL until it became generally available on 1 October 2026, billed by the data it scans.DuckDBOpen sourceAn in-process analytical SQL database: a library with no server that queries Parquet, CSV, Iceberg and S3 directly.GizmoSQLOpen sourceA database server that wraps DuckDB (or SQLite) and serves it to many clients over Arrow Flight SQL, with TLS and authentication.GlareDBDormantOpen sourceA small, embeddable SQL engine in Rust for querying Parquet and CSV files locally, over HTTP or in S3 and GCS, from a CLI, Python or the browser. It began as a DataFusion-based federated query service and was rewritten in 2025 on its own engine, and it has had no release since June 2025.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.PolarsOpen sourceA DataFrame library with a Rust query engine underneath: you write Python (or Rust, SQL, Node.js, R) and it plans, optimises and runs the query on every core, streaming data bigger than memory.RayforceOpen sourceA small embeddable engine in pure C that runs columnar analytics, graph traversals and recursive Datalog queries in one optimised plan.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.TrinoOpen sourceA distributed SQL engine that queries data where it lives, from Iceberg tables on S3 to a live PostgreSQL database, in one query.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

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 byPresto Foundation, under the Linux Foundation (founded 2019 by Facebook, Alibaba, Twitter and Uber)Trino Software Foundation, led by the creators who named Presto
WorkersJava, or C++ on Velox (Presto C++, still in active development)Java only
Long or huge batch jobsPresto on Spark runs queries as Spark jobsOptional fault-tolerant execution retries tasks or queries with spooled data
Java requiredJava 17Java 25
Latest release0.299 (August 2026)Release 483 (July 2026)
Commercial and managedIBM 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

  1. 2012

    Presto started at Facebook in the fall

  2. 2013

    In production early in the year; open-sourced in November

  3. 2019

    Presto Foundation forms under the Linux Foundation in September

  4. 2020

    The creators’ fork, PrestoSQL, is renamed Trino in December

  5. 2022

    Meta publishes Velox, the C++ library behind Presto’s native workers

  6. 2023

    IBM acquires Ahana and joins the Presto Foundation

Sources19 · facts checked 6 October 2026

Improve this page on GitHub