Plugins#

Trino uses a plugin architecture to extend its capabilities and integrate with various data sources and other systems. Trino includes many plugins as part of the binary packages - specifically the tarball and the Docker image.

Plugins implement some of the following capabilities:

All plugins are optional for your use of Trino because they support specific functionality that is potentially not needed for your use case. Plugins are located in the plugin folder of your Trino installation and are loaded automatically during Trino startup.

Download#

Typically, downloading a plugin is not necessary because Trino binaries include many plugins as part of the binary package.

Every Trino release publishes each plugin as a ZIP archive to the Maven Central Repository. Refer to [plugins-list] for details. The specific location is derived from the Maven coordinates of each plugin as defined in the pom.xml of the source code for the plugin.

For example, the PostgreSQL connector plugin can be found in the plugin/trino-postgresql directory, and the pom.xml file contains the following identifier section:

<parent>
    <groupId>io.trino</groupId>
    <artifactId>trino-root</artifactId>
    <version>470</version>
    <relativePath>../../pom.xml</relativePath>
</parent>

<artifactId>trino-postgresql</artifactId>
<packaging>trino-plugin</packaging>

The Maven coordinates are therefore io.trino:trino-postgresql:470 with version or io.trino:trino-postgresql without version. Use this term for a search to locate the artifact.

After searching, click View all next to Latest version, then click Browse to find the ZIP file for the desired version.

The coordinates translate into a path to the ZIP archive on the Maven Central Repository. Use this URL to download the plugin.

https://repo1.maven.org/maven2/io/trino/trino-postgresql/470/trino-postgresql-470.zip

Availability of plugins from other projects and organizations varies widely, and may require building a plugin from source.

When downloading a plugin you must ensure to download a version of the plugin that is compatible with your Trino installation. Full compatibility is only guaranteed when using the same Trino version used for the plugin build and the deployment, and therefore using the same version is recommended. Use the documentation or the source code of the specific plugin to confirm and refer to the SPI compatibility notes for further technical details.

Installation#

To install a plugin, extract the ZIP archive into a directory in the plugin directory of your Trino installation on all nodes of the cluster. The directory contains all necessary resources.

For example, for a plugin called example-plugin with a version of 1.0, extract the example-plugin-1.0.zip archive. Rename the resulting directory example-plugin-1.0 to example-plugin and copy it into the plugin directory of your Trino installation on all workers and the coordinator of the cluster.

Note

Every Trino plugin must be in a separate directory underneath the plugin directory. Do not put JAR files directly into the plugin directory. Each plugin directory should only contain JAR files. Any subdirectories and other files are ignored.

By default, the plugin directory is the plugin directory relative to the directory in which Trino is installed, but it is configurable using the configuration variable plugin.dir with the launcher. The Docker image uses the path /usr/lib/trino/plugin.

Restart Trino to use the plugin.

Removal#

Plugins can be safely removed if the functionality is not needed or desired on your Trino cluster. Use the following steps for a safe removal across the cluster:

  • Shut down Trino on all nodes.

  • Delete the directory in the plugin folder of the Trino installation on all nodes.

  • Start Trino on all nodes.

Refer to the List of plugins for relevant directory names.

For repeated deployments, you can remove the plugin from the binary package for your installation by creating a custom tarball or a custom Docker image.

Development#

You can develop plugins in your own fork of the Trino codebase or a separate project. Refer to the Developer guide for further details.

List of plugins#

The following list of plugins is available from the Trino project. They are included in the build and release process and the resulting the binary packages. You can also download them from the Maven Central Repository with the listed coordinates.

List of plugins#

Plugin directory

Description

Maven coordinates

apache-ranger

Ranger access control

io.trino:ranger

bigquery

BigQuery connector

io.trino:bigquery

blackhole

Black Hole connector

io.trino:blackhole

cassandra

Cassandra connector

io.trino:cassandra

clickhouse

ClickHouse connector

io.trino:clickhouse

delta-lake

Delta Lake connector

io.trino:delta-lake

druid

Druid connector

io.trino:ranger

duckdb

DuckDB connector

io.trino:druid

elasticsearch

Elasticsearch connector

io.trino:elasticsearch

example-http

Example HTTP connector

io.trino:example-http

exasol

Exasol connector

io.trino:exasol

exchange-filesystem

Fault-tolerant execution exchange file system

io.trino:exchange-filesystem

exchange-hdfs

Fault-tolerant execution exchange file system for HDFS

io.trino:exchange-hdfs

faker

Faker connector

io.trino:faker

functions-python

Python user-defined functions

io.trino:functions-python

geospatial

Geospatial functions

io.trino:geospatial

google-sheets

Google Sheets connector

io.trino:google-sheets

hive

Hive connector

io.trino:hive

http-event-listener

HTTP event listener

io.trino:http-event-listener

http-server-event-listener

HTTP server event listener

io.trino:http-server-event-listener

hudi

Hudi connector

io.trino:hudi

iceberg

Iceberg connector

io.trino:iceberg

ignite

Ignite connector

io.trino:ignite

jmx

JMX connector

io.trino:jmx

kafka

Kafka connector

io.trino:kafka

kafka-event-listener

Kafka event listener

io.trino: kafka-event-listener

kudu

Kudu connector

io.trino:kudu

loki

Loki connector

io.trino:loki

mariadb

MariaDB connector

io.trino:mariadb

memory

Memory connector

io.trino:memory

ml

Machine learning functions

io.trino:ml

mongodb

MongoDB connector

io.trino:mongodb

mysql

MySQL connector

io.trino:mysql

mysql-event-listener

MySQL event listener

io.trino:mysql-event-listener

opa

Open Policy Agent access control

io.trino:opa

openlineage

OpenLineage event listener

io.trino:openlineage

opensearch

OpenSearch connector

io.trino:opensearch

oracle

Oracle connector

io.trino:oracle

password-authenticators

Password authentication

io.trino:password-authenticators

phoenix5

Phoenix connector

io.trino:phoenix5

pinot

Pinot connector

io.trino:pinot

postgresql

PostgreSQL connector

io.trino:postgresql

prometheus

Prometheus connector

io.trino:prometheus

redis

Redis connector

io.trino:redis

redshift

Redshift connector

io.trino:redshift

resource-group-managers

Resource groups

io.trino:resource-group-managers

session-property-managers

Session property managers

io.trino:session-property-managers

singlestore

SingleStore connector

io.trino:singlestore

snowflake

Snowflake connector

io.trino:snowflake

spooling-filesystem

Server side support for Spooling protocol

io.trino:spooling-filesystem

sqlserver

SQL Server connector

io.trino:sqlserver

teradata-functions

Teradata functions

io.trino:teradata-functions

thrift

Thrift connector

io.trino:thrift

tpcds

TPC-DS connector

io.trino:tpcds

tpch

TPC-H connector

io.trino:tpch

vertica

Vertica connector

io.trino:vertica