tocdepth

2

Подключить Trino к S3

В лабораторной работе мы рассмотрим:

  • сценарий взаимодействия между Managed Trino, Managed Metastore и Object Storage;

  • отправку запросов через DBeaver;

  • работу с управляемыми таблицами;

  • работу с внешними таблицами.

Внимание

Все сущности должны располагаться в одной VPC и подсетях одного типа.

Перед началом работы

  1. Ознакомьтесь с разделом Управляемые и внешние таблицы. В следующих блоках вам будут встречаться термины «Управляемые таблицы» и «Внешние таблицы».

  2. Подключите сервис Object Storage. С тарифами можно ознакомиться на странице продукта.

  3. Установите JDBC-клиент DBeaver.

Создать бакет Object Storage

  1. Воспроизведите шаги, описанные в Быстром старте Object Storage.

  2. Убедитесь, что бакет доступен. Он должен отобразиться в списке бакетов тенанта в CyberDuck.

Создать инстанс Managed Metastore

  1. Перейдите в раздел Evolution и выберите сервис Managed Metastore.

  2. Нажмите Создать инстанс.

  3. В блоке Общие параметры заполните поля следующими значениями:

    • Название — metastore-lab.

    • База данных — выберите базу данных.

    • VPC — выберите VPC-сеть.

    • Зона доступности — выберите зону доступности, для которой создан SNAT-шлюз.

    • Подсеть — выберите подсеть.

  4. В блоке Настройки сервера:

    • Название — server-lab.

    • Группа безопасности — выберите группу безопасности.

    • Группа логов — выберите группу логов.

    • Файловая система — S3.

    • Источник — Object Storage.

    • Бакет — выберите созданный бакет Object Storage.

  5. Дождитесь, когда статус инстанса изменится на «Готов».

  6. Нажмите Скопировать Thrift URL.

Создать подключение к Managed Metastore

  1. Перейдите в раздел Evolution и выберите сервис Managed Metastore.

  2. Нажмите Создать и выберите Подключение.

  3. Заполните поля следующими значениями:

    • Название — metastore_lab;

    • Коннектор — Metastore;

    • Thrift URL — Thrift URL, скопированный с карточки Metastore;

    • Эндпоинтhttps://s3.cloud.ru;

    • Идентификатор ключа доступа — access key, выбирается из Secret Manager;

    • Секретный ключ доступа — secret key, выбирается из Secret Manager;

    • Регион S3ru-central-1.

  4. Нажмите Создать.

На странице Managed Trino на вкладке Подключения появится запись с названием «metastore_lab».

Создать инстанс Trino

  1. Перейдите в раздел Evolution и выберите сервис Managed Trino.

  2. Нажмите Создать и выберите Инстанс Trino.

  3. В блоке Общие параметры заполните поля следующими значениями:

    • Название — trino-lab-2.

    • Вычислительные ресурсы — Small (vCPU 4, RAM 16).

    • Количество нод — 3.

    • Подключения — выберите из списка подключение Metastore с названием «metastore_lab».

  4. Нажмите Продолжить.

  5. В блоке Сетевые настройки заполните поля:

    • VPC — выберите сеть VPC.

    • Зона доступности — выберите зону доступности, для которой создан SNAT-шлюз.

    • Подсеть — выберите подсеть, в которой расположен инстанс Managed Metastore.

    • Группа безопасности — выберите группу безопасности.

    • Пользователь — введите имя пользователя.

    • Пароль — выберите секретный ключ.

    • Подключить публичный хост — активируйте переключатель.

  6. Нажмите Создать.

  7. Дождитесь, когда статус инстанса изменится на «Готов».

  8. Откройте карточку инстанса Trino. Информация из него понадобится на следующих этапах.

Подключить Trino к DBeaver

  1. Откройте приложение DBeaver.

  2. В панели сверху нажмите База данных → Новое соединение.

  3. В списке соединений выберите Trino.

  4. Нажмите Далее заполните поля на вкладке Главное:

    • Хост — публичный хост, указанный в карточке инстанса.

    • Порт — порт, указанный в карточке инстанса.

    • Пользователь — пользователь, указанный в карточке инстанса.

    • Пароль — пароль, указанный в карточке инстанса.

    ../_images/dbeaver__connection-1.png
  5. На вкладке Свойства драйвера измените значение свойства SSL на true.

    ../_images/dbeaver__connection-2.png
  6. Нажмите Тест соединения.

  7. Нажмите Готово.

Слева в списке объектов появится база данных Metastore с названием «metastore_lab».

../_images/dbeaver__connection-ready-2.png

Работа с управляемыми таблицами

SQL-запросы в следующих шагах мы будем отправлять через DBeaver. Проверять результат будем в CyberDuck.

Примечание

Ознакомьтесь с разделом Управляемые и внешние таблицы перед началом.

Управляемая таблица в формате .orc

  1. Создайте схему.

    CREATE SCHEMA IF NOT EXISTS metastore_lab.my_company
    

    В S3 автоматически создастся каталог warehouse и каталог со схемой my_company.db.

  2. Создайте таблицу.

    CREATE TABLE IF NOT EXISTS metastore_lab.my_company.employees (id_employee INT, email VARCHAR(255))
    

    В S3 создастся каталог employees.

  3. Заполните таблицу.

    INSERT INTO metastore_lab.my_company.employees values (1, 'xxx@example.com'), (2, 'yyy@example.com'), (3, 'zzz@example.com')
    
  4. Проверьте результат.

    SELECT * FROM metastore_lab.my_company.employees
    

    В S3 появится файл в формате .orc.

  5. Удалите таблицу.

    DROP TABLE metastore_lab.my_company.employees
    

В результате таблица удалена из Metastore, в S3 все данные вместе с каталогом employees также удалены.

Управляемая таблица в текстовом формате

  1. Создайте схему.

    CREATE SCHEMA IF NOT EXISTS metastore_lab.my_company
    

    В S3 автоматически создастся каталог warehouse и каталог со схемой my_company.db.

  2. Сохраните данные в текстовом формате.

    CREATE TABLE IF NOT EXISTS metastore_lab.my_company.employees_csv (id_employee INT, email VARCHAR(255))
    WITH (
    format = 'TEXTFILE'
    )
    
  3. Заполните таблицу.

    INSERT INTO metastore_lab.my_company.employees_csv values (1, 'xxx@example.com'), (2, 'yyy@example.com'), (3, 'zzz@example.com')
    
  4. Проверьте результат.

    SELECT * FROM metastore_lab.my_company.employees_csv
    

    В S3 появится файл в формате .gz.

  5. Удалите таблицу.

    DROP TABLE metastore_lab.my_company.employees_csv
    

В результате таблица удалена из Metastore, в S3 все данные вместе с каталогом employees_csv также удалены.

Работа с внешними таблицами

Работать с внешними таблицами мы будем через CyberDuck.

  1. Запустите CyberDuck.

  2. Откройте бакет S3.

  3. Создайте каталог с названием data.

  4. Подготовьте файл с данными в формате .csv:

    • колонки: id, email

    • значения в колонке id: 1, 2, 3

    • значения в колонке email: xxx@example.com, yyy@example.com, zzz@example.com

  5. Добавьте файл в каталог «data» на S3.

  6. Запустите DBeaver.

  7. Через DBeaver создайте схему.

    CREATE SCHEMA IF NOT EXISTS metastore_lab.my_company
    
  8. Создайте таблицу.

    CREATE TABLE IF NOT EXISTS metastore_lab.my_company.csv_external (id VARCHAR, email VARCHAR)
    WITH (
       external_location = 's3a://bucket-4b8dce/data',
       format = 'CSV',
       csv_separator = ';',
       skip_header_line_count = 1
    )
    
  9. Проверьте результат.

    SELECT * FROM metastore_lab.my_company.csv_external
    
  10. Подготовьте новый файл с данными в формате .csv:

    • колонки: id, email

    • значения в колонке id: 4, 5, 6

    • значения в колонке email: aaa@example.com, bbb@example.com, ccc@example.com

  11. Добавьте файл в каталог «data» на S3. В этом сценарии мы имитируем поступление новых данных из другой системы.

  12. Проверьте результат.

    SELECT * FROM metastore_lab.my_company.csv_external
    

    Система считывает данные из двух разных файлов с одинаковой структурой и с одинаковым разрешением, как если бы это был один файл.

  13. Заполните таблицу новыми значениями.

    INSERT INTO metastore_lab.my_company.csv_external values ('7', 'mmm@example.com'), ('8', 'nnn@example.com'), ('9', 'ooo@example.com')
    
  14. Проверьте результат.

    SELECT * FROM metastore_lab.my_company.csv_external
    

    В S3 появится файл в формате .gz.

  15. Удалите таблицу.

    DROP TABLE metastore_lab.my_company.csv_external
    

В результате таблица удалена из Metastore. В отличие от управляемых таблиц файлы в S3 остаются доступными.

Запустили Evolution free tier
для Dev & Test
Получить