Обзор коннекторов в Trino

Обзор

Коннекторы в Trino — это Java-плагины, которые позволяют Trino взаимодействовать с различными источниками данных, такими как озера данных Hadoop, хранилища Hive, таблицы Apache Iceberg, базы данных PostgreSQL и многие другие. Trino получает доступ к источнику данных с помощью коннектора, который настраивается в каталоге. Коннекторы отвечают за коммуникацию между Trino и целевым источником данных, а также транслируют ANSI SQL-команды Trino в команды, соответствующие целевому источнику данных. Один коннектор можно использовать для доступа к одному или нескольким источникам данных одного типа.

Роль коннекторов во взаимодействии с Trino представлена на следующей высокоуровневой схеме.

Коннекторы Trino
Коннекторы Trino
Коннекторы Trino
Коннекторы Trino

Поддерживаемые коннекторы

Полный список коннекторов, поддерживаемых Trino, доступен в документации Trino.

Настройка коннекторов

Коннекторы Trino настраиваются с помощью конфигурационных файлов каталога. Коннектор, который должен использоваться для доступа к источнику данных каталога, указывается в конфигурационном файле <catalog_name>.properties с помощью свойства connector.name. Например:

connector.name=hive
...
ПРИМЕЧАНИЕ
Один и тот же коннектор можно использовать для работы с несколькими каталогами. Например, если у вас есть два хранилища Hive с отдельными базами данных под Metastore, вы можете настроить два отдельных каталога, которые используют один и тот же коннектор Hive (connector.name=hive), но содержат разные параметры соединения для каждого каталога.

Конфигурационные файлы каталогов могут также содержать дополнительные параметры, специфичные для конкретного типа коннекторов, для тонкой настройки взаимодействия с источником данных. Например:

hive.metastore.thrift.impersonation.enabled=True
iceberg.catalog.type=hive_metastore
iceberg.compression-codec=SNAPPY
iceberg.file-format=PARQUET
...

Более подробную информацию о конфигурационных свойствах каждого коннектора можно найти в соответствующем разделе документации Trino.

Создание пользовательского коннектора

Помимо списка коннекторов, поддерживаемых ADH-сервисом Trino "из коробки", вы можете создавать собственные коннекторы для работы с любым источником данных. Даже если источник данных не использует такие сущности, как таблицы, столбцы, строки, партиции и прочие, адаптировав источник данных к Trino API с помощью коннектора, вы сможете писать запросы на SQL и получать результаты из этого источника данных.

С технической точки зрения новые коннекторы Trino добавляются в виде плагинов. Коннектор должен реализовывать service provider interface (SPI), который позволяет Trino взаимодействовать с источником данных. В каждом коннекторе должен быть реализован следующий функционал API:

  • Операции получения метаданных о таблицах, представлениях и схемах.

  • Операции по созданию логических единиц партиционирования данных, позволяющие Trino распараллеливать операции чтения и записи.

  • Генераторы и ресиверы данных, которые преобразуют исходные данные в in-memory объекты, обрабатываемые движком Trino.

Реализовав SPI для коннектора Trino, можно использовать стандартные операции Trino для подключения к любому источнику данных и выполнения операций над любым источником данных. Реализация конкретного коннектора должна учитывать все детали, связанные с особенностями источника данных, с которым взаимодействует коннектор.

Например, базовый Trino-коннектор, поддерживающий чтение данных из источника данных, должен реализовать определенный набор методов, включая listTables(). Движок Trino вызывает этот метод для всех коннекторов, чтобы получить список доступных таблиц в схеме/базе данных. Движок Trino не располагает информацией, как именно каждый конкретный коннектор получает список таблиц. Некоторые коннекторы могут получить список из информационной схемы, другие могут запросить информацию из хранилища метаданных, а некоторые получают список через API источника данных. Вся логика получения списка таблиц для конкретного источника данных реализуется только в коннекторе.

Подробности и примеры создания пользовательских коннекторов доступны в следующих разделах документации Trino:

Также вы можете использовать исходный код существующих коннекторов Trino в GitHub.

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней