Presto C++

Note: Presto C++ is in active development. See Limitations.

Overview

Presto C++, sometimes referred to by the development name Prestissimo, is a drop-in replacement for Presto workers written in C++ and based on the Velox library. It implements the same RESTful endpoints as Java workers using the Proxygen C++ HTTP framework. Because communication with the Java coordinator and across workers is only done using the REST endpoints, Presto C++ does not use JNI and does not require a JVM on worker nodes.

Presto C++’s codebase is located at presto-native-execution.

Motivation and Vision

Presto aims to be the top performing system for data lakes. To achieve this goal, the Presto community is moving the Presto evaluation engine from the native Java-based implementation to a new implementation written in C++ using Velox.

By moving the evaluation engine to a library, the intent is to enable the Presto community to focus on more features and better integration with table formats and other data warehousing systems.

Supported Use Cases

Only specific connectors are supported in the Presto C++ evaluation engine.

  • Hive connector for reads and writes, including CTAS, are supported.

  • Iceberg tables are supported only for reads.

  • Iceberg connector supports both V1 and V2 tables, including tables with delete files.

  • TPCH connector, with tpch.naming=standard catalog property.