Пример использования Trino ADB connector
В данной статье описан пошаговый сценарий, в котором показаны основные операции с ADB-кластером, выполняемые с использованием коннектора Trino.
Подготовка кластера ADB
Для корректного выполнения сценария убедитесь, что кластер ADB настроен в соответствии со следующими требованиями:
-
В кластере ADB создан пользователь
adb_trino_demo_user
с правамиCREATEEXTTABLE
и паролем123
.Чтобы добавить пользователя, на мастер-хосте ADB запустите
psql
:$ sudo su - gpadmin $ psql adb
В терминале
psql
выполните следующий запрос:CREATE ROLE adb_trino_demo_user WITH CREATEEXTTABLE(protocol='gpfdist',type='readable') CREATEEXTTABLE(protocol='gpfdist',type='writable') LOGIN PASSWORD '123';
-
В кластере ADB существует база данных
adb_trino_demo_db
. Чтобы создать БД, выполните запрос:CREATE DATABASE adb_trino_demo_db;
-
Пользователь
adb_trino_demo_user
имеет доступ к базе данныхadb_trino_demo_db
. Для этого в файл pg_hba.conf необходимо добавить следующую запись:host all adb_trino_demo_user 0.0.0.0/0 md5
Обратите внимание, что данная конфигурация предназначена для использования исключительно в тестовых целях. Вместо
0.0.0.0/0
можно указать IP-адреса (включая подсеть) хостов ADH-кластера, на которых установлены компоненты сервиса Trino.РЕКОМЕНДАЦИЯФайл pg_hba.conf можно редактировать в ADCM. Для этого используйте опцию Custom pg_hba section на вкладке Configuration сервиса ADB. Чтобы изменения вступили в силу, нажмите Save и выполните сервисное действие Reconfigure & Restart.
-
В базе данных
adb_trino_demo_db
создана тестовая таблицаauthor
(в схемеpublic
). Для создания и наполнения тестовой таблицы используйте следующие запросы вpsql
.Подключитесь к тестовой базе данных:
\c adb_trino_demo_db
Затем выполните запросы:
CREATE TABLE public.author (id INT NOT NULL, name TEXT NOT NULL) WITH (appendoptimized=true) DISTRIBUTED BY(id);
INSERT INTO public.author(id, name) VALUES (1,'Virginia Woolf'), (2,'J.R.R. Tolkien'), (3,'Harper Lee'), (4,'J.D. Salinger'), (5,'George Orwell'), (6,'John Steinbeck'), (7,'Margaret Mitchell'), (8,'Alan Moore'), (9,'Jack Kerouac'), (10,'Ernest Hemingway');
-
ADB-пользователь
adb_trino_demo_user
обладает достаточными правами для выполнения операций с таблицейauthor
. Для предоставления прав на чтение/запись выполните запрос:GRANT SELECT, INSERT ON public.author TO adb_trino_demo_user;
Выполнение сценария
To run the example scenario, ensure that your ADB cluster is configured according to the following requirements:
Перед запуском примеров убедитесь, что все требования выполнены.
-
Создайте новый каталог Trino для работы с ADB. Для этого перейдите в настройки сервиса Trino в ADCM, активируйте Custom catalogs и укажите следующие параметра каталога:
catalog_name key value adbcatalog
connector.name
adb
connection-url
jdbc:postgresql://10.92.40.79:5432/adb_trino_demo_db
Где:
-
10.92.40.79
— пример адреса мастер-хоста ADB. Используйте IP вашего хоста. -
adb_trino_demo_db
— тестовая база данных ADB. БД должна быть создана заранее, пример создания описан в требованиях.
connection-user
adb_trino_demo_user
connection-password
123
-
-
Сохраните конфигурацию и перезапустите сервис Trino.
РЕКОМЕНДАЦИЯИспользуя динамическое управление каталогами, можно создавать/удалять каталоги с помощью командCREATE
/DELETE
без необходимости перезапускать сервис Trino. -
Подключитесь к Trino, используя JDBC-клиент, например DBeaver (или клиент Trino CLI). При подключении укажите JDBC URL сервиса Trino, например:
jdbc:trino://ka-adh-2.ru-central1.internal:18188
Актуальная строка подключения доступна в ADCM (Clusters → <ADH_cluster> → Services → Trino → Info).
-
Подключившись к сервису Trino, выведите список каталогов Trino с помощью команды:
SHOW CATALOGS;
Убедитесь, что тестовый каталог ADB доступен:
Catalog | ----------+ adbcatalog| system |
РЕКОМЕНДАЦИЯДля анализа запросов, которые Trino отправляет в ADB, используйте Trino UI. -
Выберите тестовый каталог и схему для дальнейших запросов:
USE adbcatalog.public;
-
Запросите данные из тестовой таблицы ADB. Шаги по созданию тестовой таблицы описаны в требованиях.
SELECT * FROM author;
Вывод:
id|name | --+-----------------+ 2|J.R.R. Tolkien | 1|Virginia Woolf | 6|John Steinbeck | 9|Jack Kerouac | 5|George Orwell | 3|Harper Lee | 7|Margaret Mitchell| 8|Alan Moore | 4|J.D. Salinger | 10|Ernest Hemingway |
-
Запишите данные в тестовую таблицу:
INSERT INTO author (id, name) VALUES (11, 'L.N. Tolstoy');
-
Проверьте результаты записи на стороне ADB.
Для этого запустите
psql
на мастер-хосте ADB:$ sudo su - gpadmin $ psql adb_trino_demo_db
В терминале
psql
выполните запрос:SELECT * FROM public.author WHERE name LIKE '%Tolstoy%';
Вывод содержит запись, записанную в ADB через Trino-коннектор:
id | name ----+-------------- 11 | L.N. Tolstoy (1 row)
-
Создайте новую таблицу в ADB с помощью коннектора Trino. Для этого выполните следующий запрос в DBeaver:
CREATE TABLE public.transactions ( txn_id integer, acc_id varchar, txn_value double, txn_date date ) WITH ( distributed_by = ARRAY['acc_id', 'txn_date'], (1) appendoptimized = true (2) );
1 Хеш‑распределение данных по нескольким столбцам. 2 Установка типа таблицы append-optimized. Подробная информация о свойствах ADB-таблиц, которые можно установить с помощью Trino-коннектора, доступна в разделе Свойства таблиц ADB.
INSERT INTO public.transactions (txn_id, acc_id, txn_value, txn_date) VALUES (1, '1001', cast(20.00 as double), cast('2025-01-02' AS date)), (2, '1002', cast(110.50 as double), cast('2025-01-01' AS date)), (3, '1003', cast(23 as DOUBLE), cast('2025-01-01' AS date));
-
Проверьте создание таблицы на мастер-хосте ADB с помощью
psql
:\dt;
Новая таблица доступна в списке:
List of relations Schema | Name | Type | Owner | Storage --------+--------------+-------+---------------------+------------- public | author | table | gpadmin | append only public | transactions | table | adb_trino_demo_user | append only (2 rows)
-
Для удаления таблицы используйте команду:
DROP TABLE IF EXISTS public.transactions;
ПРИМЕЧАНИЕКоннектор Trino может удалять таблицы, только если в настройках ADB-каталога указан пользователь ADB, являющийся владельцем таблицы (table owner).