Пример использования 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:

Перед запуском примеров убедитесь, что все требования выполнены.

  1. Создайте новый каталог 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

  2. Сохраните конфигурацию и перезапустите сервис Trino.

    РЕКОМЕНДАЦИЯ
    Используя динамическое управление каталогами, можно создавать/удалять каталоги с помощью команд CREATE/DELETE без необходимости перезапускать сервис Trino.
  3. Подключитесь к Trino, используя JDBC-клиент, например DBeaver (или клиент Trino CLI). При подключении укажите JDBC URL сервиса Trino, например:

    jdbc:trino://ka-adh-2.ru-central1.internal:18188

    Актуальная строка подключения доступна в ADCM (Clusters → <ADH_cluster> → Services → Trino → Info).

  4. Подключившись к сервису Trino, выведите список каталогов Trino с помощью команды:

    SHOW CATALOGS;

    Убедитесь, что тестовый каталог ADB доступен:

    Catalog   |
    ----------+
    adbcatalog|
    system    |
    РЕКОМЕНДАЦИЯ
    Для анализа запросов, которые Trino отправляет в ADB, используйте Trino UI.
  5. Выберите тестовый каталог и схему для дальнейших запросов:

    USE adbcatalog.public;
  6. Запросите данные из тестовой таблицы 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 |
  7. Запишите данные в тестовую таблицу:

    INSERT INTO author (id, name)
    VALUES (11, 'L.N. Tolstoy');
  8. Проверьте результаты записи на стороне 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)
  9. Создайте новую таблицу в 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));
  10. Проверьте создание таблицы на мастер-хосте 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)
  11. Для удаления таблицы используйте команду:

    DROP TABLE IF EXISTS public.transactions;
    ПРИМЕЧАНИЕ
    Коннектор Trino может удалять таблицы, только если в настройках ADB-каталога указан пользователь ADB, являющийся владельцем таблицы (table owner).
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней