diff --git a/presto-docs/src/main/sphinx/index.rst b/presto-docs/src/main/sphinx/index.rst index 420538350543..54c05e4413c8 100644 --- a/presto-docs/src/main/sphinx/index.rst +++ b/presto-docs/src/main/sphinx/index.rst @@ -22,7 +22,7 @@ Presto Documentation ecosystem router develop - prestissimo + presto-cpp release .. Note: If "release" is not the last item, the CSS must be updated. diff --git a/presto-docs/src/main/sphinx/prestissimo.rst b/presto-docs/src/main/sphinx/prestissimo.rst deleted file mode 100644 index 67dd9770a33d..000000000000 --- a/presto-docs/src/main/sphinx/prestissimo.rst +++ /dev/null @@ -1,25 +0,0 @@ -*************************** -Prestissimo Developer Guide -*************************** - -This guide is intended for Prestissimo contributors and plugin developers. - -Note: Prestissimo is in active development. - -Prestissimo is a C++ drop-in replacement for Presto workers based on the Velox -library. It implements the same RESTful endpoints as Java workers using the -Proxygen C++ HTTP framework. Since communication with the Java coordinator and -across workers is only done using the REST endpoints, Prestissimo does not use -JNI and it is commonly deployed in such a way as to avoid having a JVM process -on worker nodes. - -Prestissimo's codebase is located at `presto-native-execution -`_. - - -.. toctree:: - :maxdepth: 1 - - prestissimo/prestissimo-features - prestissimo/prestissimo-limitations - prestissimo/prestissimo-properties diff --git a/presto-docs/src/main/sphinx/prestissimo/prestissimo-limitations.rst b/presto-docs/src/main/sphinx/prestissimo/prestissimo-limitations.rst deleted file mode 100644 index 4ce965fea739..000000000000 --- a/presto-docs/src/main/sphinx/prestissimo/prestissimo-limitations.rst +++ /dev/null @@ -1,19 +0,0 @@ -======================= -Prestissimo Limitations -======================= - -.. contents:: - :local: - :backlinks: none - :depth: 1 - -Functions -========= - -reduce_agg ----------- - -In Prestissimo, ``reduce_agg`` is not permitted to return ``null`` in either the -``inputFunction`` or the ``combineFunction``. In Presto Java, this is permitted -but undefined behavior. For more information about ``reduce_agg`` in Presto, -see `reduce_agg <../functions/aggregate.html#reduce_agg>`_. \ No newline at end of file diff --git a/presto-docs/src/main/sphinx/prestissimo/prestissimo-properties.rst b/presto-docs/src/main/sphinx/prestissimo/prestissimo-properties.rst deleted file mode 100644 index d10f8c40b0c7..000000000000 --- a/presto-docs/src/main/sphinx/prestissimo/prestissimo-properties.rst +++ /dev/null @@ -1,28 +0,0 @@ -================================ -Prestissimo Properties Reference -================================ - -This section describes Prestissimo configuration properties. - -The following pages are not a complete list of all configuration and -session properties, and do not include any connector-specific -catalog configuration properties. For more information on catalog configuration -properties, refer to the Presto :doc:`connector documentation `. - -.. contents:: - :local: - :backlinks: none - :depth: 1 - -General Properties ------------------- - -``property-name`` -^^^^^^^^^^^^^^^^^ - -* **Type:** ``type`` -* **Allowed values:** ``value`` -* **Default value:** ``default`` - - Definition. - diff --git a/presto-docs/src/main/sphinx/presto-cpp.rst b/presto-docs/src/main/sphinx/presto-cpp.rst new file mode 100644 index 000000000000..94298183213c --- /dev/null +++ b/presto-docs/src/main/sphinx/presto-cpp.rst @@ -0,0 +1,51 @@ +********** +Presto C++ +********** + +Note: Presto C++ is in active development. See :doc:`Limitations `. + +.. toctree:: + :maxdepth: 1 + + presto_cpp/features + presto_cpp/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. \ No newline at end of file diff --git a/presto-docs/src/main/sphinx/prestissimo/prestissimo-features.rst b/presto-docs/src/main/sphinx/presto_cpp/features.rst similarity index 94% rename from presto-docs/src/main/sphinx/prestissimo/prestissimo-features.rst rename to presto-docs/src/main/sphinx/presto_cpp/features.rst index d437ca930a67..28c2b2ff77d8 100644 --- a/presto-docs/src/main/sphinx/prestissimo/prestissimo-features.rst +++ b/presto-docs/src/main/sphinx/presto_cpp/features.rst @@ -1,6 +1,6 @@ -==================== -Prestissimo Features -==================== +=================== +Presto C++ Features +=================== .. contents:: :local: @@ -27,7 +27,7 @@ Other HTTP endpoints include: * GET: v1/info * GET: v1/status -The request/response flow of Prestissimo is identical to Java workers. The +The request/response flow of Presto C++ is identical to Java workers. The tasks or new splits are registered via `TaskUpdateRequest`. Resource utilization and query progress are sent to the coordinator via task endpoints. @@ -35,9 +35,9 @@ utilization and query progress are sent to the coordinator via task endpoints. Remote Function Execution ------------------------- -Prestissimo supports remote execution of scalar functions. This feature is +Presto C++ supports remote execution of scalar functions. This feature is useful for cases when the function code is not written in C++, or if for -security or flexibility reasons the function code cannot be linked to the same +security or flexibility reasons, the function code cannot be linked to the same executable as the main engine. Remote function signatures need to be provided using a JSON file, following @@ -114,7 +114,7 @@ function server. If specified, takes precedence over JWT authentication support -------------------------- -Prestissimo supports JWT authentication for internal communication. +C++ based Presto supports JWT authentication for internal communication. For details on the generally supported parameters visit `JWT <../security/internal-communication.html#jwt>`_. There is also an additional parameter: @@ -169,9 +169,9 @@ Size of the SSD cache when async data cache is enabled. * **Default value:** ``true`` * **Presto on Spark default value:** ``false`` -Enable periodic clean up of old tasks. This is ``true`` for Prestissimo, -however for Presto on Spark this defaults to ``false`` as zombie/stuck tasks -are handled by spark via speculative execution. +Enable periodic clean up of old tasks. The default value is ``true`` for Presto C++. +For Presto on Spark this property defaults to ``false``, as zombie or stuck tasks +are handled by Spark by speculative execution. ``old-task-cleanup-ms`` ^^^^^^^^^^^^^^^^^^^^^^^ @@ -189,7 +189,7 @@ Old task is defined as a PrestoTask which has not received heartbeat for at leas Session Properties ------------------ -The following are the native session properties for Prestissimo. +The following are the native session properties for C++ based Presto. ``driver_cpu_time_slice_limit_ms`` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/presto-docs/src/main/sphinx/presto_cpp/limitations.rst b/presto-docs/src/main/sphinx/presto_cpp/limitations.rst new file mode 100644 index 000000000000..8a7883ed43e2 --- /dev/null +++ b/presto-docs/src/main/sphinx/presto_cpp/limitations.rst @@ -0,0 +1,44 @@ +====================== +Presto C++ Limitations +====================== + +.. contents:: + :local: + :backlinks: none + :depth: 1 + +General Limitations +=================== + +The C++ evaluation engine has a number of limitations: + +* Not all built-in functions are implemented in C++. Attempting to use unimplemented functions results in a query failure. For supported functions, see `Function Coverage `_. + +* Not all built-in types are implemented in C++. Attempting to use unimplemented types will result in a query failure. + +* Certain parts of the plugin SPI are not used by the C++ evaluation engine. In particular, C++ workers will not load any plugin in the plugins directory, and certain plugin types are either partially or completely unsupported. + + * ``PageSourceProvider``, ``RecordSetProvider``, and ``PageSinkProvider`` do not work in the C++ evaluation engine. + + * User-supplied functions, types, parametric types and block encodings are not supported. + + * The event listener plugin does not work at the split level. + + * User-defined functions do not work in the same way, see `Remote Function Execution `_. + +* Memory management works differently in the C++ evaluation engine. In particular: + + * The OOM killer is not supported. + * The reserved pool is not supported. + * In general, queries may use more memory than they are allowed to through memory arbitration. See `Memory Management `_. + +Functions +========= + +reduce_agg +---------- + +In C++ based Presto, ``reduce_agg`` is not permitted to return ``null`` in either the +``inputFunction`` or the ``combineFunction``. In Presto (Java), this is permitted +but undefined behavior. For more information about ``reduce_agg`` in Presto, +see `reduce_agg <../functions/aggregate.html#reduce_agg>`_. \ No newline at end of file