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 GitHub. Refer to List of plugins for details.

The specific name 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>481</version>
    <relativePath>../../pom.xml</relativePath>
</parent>

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

The coordinates translate into a path to the ZIP archive on GitHub releases. Use this URL to download the plugin.

For example, the PostgreSQL connector plugin can be downloaded at

https://github.com/trinodb/trino/releases/download/481/trino-postgresql-481.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.

The trino-packages project contains example projects to create a tarball and Docker image with a selection of plugins by installing only the desired plugins.

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.

List of plugins#

Plugin directory

Description

Download

ai-functions

AI functions

trino-ai-functions-481.zip

bigquery

BigQuery connector

trino-bigquery-481.zip

blackhole

Black Hole connector

trino-blackhole-481.zip

cassandra

Cassandra connector

trino-cassandra-481.zip

clickhouse

ClickHouse connector

trino-clickhouse-481.zip

delta-lake

Delta Lake connector

trino-delta-lake-481.zip

druid

Druid connector

trino-druid-481.zip

duckdb

DuckDB connector

trino-duckdb-481.zip

elasticsearch

Elasticsearch connector

trino-elasticsearch-481.zip

example-http

Example HTTP connector

trino-example-http-481.zip

exasol

Exasol connector

trino-exasol-481.zip

exchange-filesystem

Fault-tolerant execution exchange file system

trino-exchange-filesystem-481.zip

exchange-hdfs

Fault-tolerant execution exchange file system for HDFS

trino-exchange-hdfs-481.zip

faker

Faker connector

trino-faker-481.zip

functions-python

Python user-defined functions

trino-functions-python-481.zip

geospatial

Geospatial functions

trino-geospatial-481.zip

google-sheets

Google Sheets connector

trino-google-sheets-481.zip

hive

Hive connector

trino-hive-481.zip

http-event-listener

HTTP event listener

trino-http-event-listener-481.zip

http-server-event-listener

HTTP server event listener

trino-http-server-event-listener-481.zip

hudi

Hudi connector

trino-hudi-481.zip

iceberg

Iceberg connector

trino-iceberg-481.zip

ignite

Ignite connector

trino-ignite-481.zip

jmx

JMX connector

trino-jmx-481.zip

kafka

Kafka connector

trino-kafka-481.zip

kafka-event-listener

Kafka event listener

trino-kafka-event-listener-481.zip

lakehouse

Lakehouse connector

trino-lakehouse-481.zip

loki

Loki connector

trino-loki-481.zip

mariadb

MariaDB connector

trino-mariadb-481.zip

memory

Memory connector

trino-memory-481.zip

ml

Machine learning functions

trino-ml-481.zip

mongodb

MongoDB connector

trino-mongodb-481.zip

mysql

MySQL connector

trino-mysql-481.zip

mysql-event-listener

MySQL event listener

trino-mysql-event-listener-481.zip

opa

Open Policy Agent access control

trino-opa-481.zip

openlineage

OpenLineage event listener

trino-openlineage-481.zip

opensearch

OpenSearch connector

trino-opensearch-481.zip

oracle

Oracle connector

trino-oracle-481.zip

password-authenticators

Password authentication

trino-password-authenticators-481.zip

pinot

Pinot connector

trino-pinot-481.zip

postgresql

PostgreSQL connector

trino-postgresql-481.zip

prometheus

Prometheus connector

trino-prometheus-481.zip

ranger

Ranger access control

trino-ranger-481.zip

redis

Redis connector

trino-redis-481.zip

redshift

Redshift connector

trino-redshift-481.zip

resource-group-managers

Resource groups

trino-resource-group-managers-481.zip

session-property-managers

Session property managers

trino-session-property-managers-481.zip

singlestore

SingleStore connector

trino-singlestore-481.zip

snowflake

Snowflake connector

trino-snowflake-481.zip

spooling-filesystem

Server side support for Spooling protocol

trino-spooling-filesystem-481.zip

sqlserver

SQL Server connector

trino-sqlserver-481.zip

teradata-functions

Teradata functions

trino-teradata-functions-481.zip

thrift

Thrift connector

trino-thrift-481.zip

tpcds

TPC-DS connector

trino-tpcds-481.zip

tpch

TPC-H connector

trino-tpch-481.zip