tocdepth

2

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

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

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

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

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

    • создание;

    • заполнение;

    • удаление таблиц из Metastore и S3.

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

    • добавление данных в существующую таблицу;

    • удаление информации о таблице из Metastore.

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

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

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

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

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

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

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

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

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

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

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

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

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

    • Путь до warehouses3a://<bucket>/<warehouse>

      • bucket — название бакета;

      • warehouse — название каталога для warehouse;

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

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

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

    ../_images/metastore__instance-creation.png
  4. В блоке Сетевые настройки заполните поля значениями по умолчанию.

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

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

../_images/metastore__instance-ready-s3.png

Создать подключение к 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.

    ../_images/trino__connection-creation-metastore.png
  4. Нажмите Создать.

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

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

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

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

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

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

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

    • Пользователь — выберите из списка;

    • Парольсекретный ключ сервиса Secret Manager из списка;

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

    ../_images/trino__instance-creation-metastore.png
  4. В блоке Сетевые настройки заполните поля значениями по умолчанию.

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

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

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

../_images/trino__instance-ready-metastore-s3.png

Подключить 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
Получить