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

Hive Table Support

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

  • Hive connector supports Delta Lake table access using Symlink table in Presto C++. For more information about Symlink tables, see Presto, Trino, and Athena to Delta Lake integration using manifests.

  • Supports reading and writing of DWRF and PARQUET file formats.

  • Supports reading ORC file format.

Iceberg Table Support

  • Iceberg tables use the Hive connector implementation in Velox.

  • Only read operations are supported for Iceberg tables.

  • The Iceberg connector supports both V1 and V2 tables, including those with positional delete files, but does not support equality delete files.

For more information see Iceberg Connector documentation.

TPCH Connector

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