Подключение Trino к S3
В лабораторной работе мы рассмотрим:
-
сценарий взаимодействия между Managed Trino, Managed Metastore и Object Storage;
-
отправку запросов через DBeaver;
-
работу с управляемыми таблицами;
-
работу с внешними таблицами.
Все сущности должны располагаться в одной VPC и подсетях одного типа.
Перед началом работы
-
Если вы уже зарегистрированы, войдите под своей учетной записью.
-
Ознакомьтесь с разделом Управляемые и внешние таблицы. В следующих блоках вам будут встречаться термины «Управляемые таблицы» и «Внешние таблицы».
-
(Опционально) Cоздайте публичный SNAT-шлюз, если необходим доступ в интернет.
-
Создайте бакет Object Storage, в котором будут храниться таблицы и схемы.
-
Создайте секреты в сервисе Secret Management для доступа к Object Storage. Понадобится сохранить идентификатор ключа доступа (access key) и секретный ключ доступа (key secret).
-
Создайте кластер Data Platform, в котором будет размещен инстанс.
Назовите кластер «dp-labs».
-
Скачайте и установите root-сертификат на устройство.
-
Установите JDBC-клиент DBeaver.
Создайте инстанс Managed Metastore
-
Перейдите в раздел Evolution и выберите сервис Managed Metastore.
-
Откройте раздел Инстансы.
-
Нажмите Создать инстанс.
-
В блоке Общие параметры заполните поля следующими значениями:
-
Название — metastore-lab.
-
Кластер — dp-labs.
-
Лог-группа — группа логов.
-
Файловая система — S3.
-
Источник — Object Storage.
-
Бакет — созданный бакет Object Storage.
-
-
Нажмите Продолжить.
-
В блоке Сетевые настройки выберите:
-
Зона доступности — зону доступности, для которой создан SNAT-шлюз.
-
Подсеть — подсеть с DNS-сервером.
-
-
Нажмите Создать.
-
Дождитесь, когда статус инстанса изменится на «Готов».
-
Нажмите Скопировать Thrift URL.
Создайте каталог Metastore
-
Перейдите в раздел Evolution и выберите сервис Managed Metastore.
-
Откройте раздел Каталоги.
-
Нажмите Создать каталог.
-
Заполните поля следующими значениями:
-
Название — metastore_lab;
-
Коннектор — Metastore;
-
Thrift URL — Thrift URL, скопированный с карточки Metastore;
-
Эндпоинт — https://s3.cloud.ru;
-
Идентификатор ключа доступа — access key, выбирается из Secret Management;
-
Секретный ключ доступа — secret key, выбирается из Secret Management;
-
Регион S3 — ru-central-1.
-
-
Нажмите Создать.
На странице Managed Trino на вкладке Каталоги появится запись с названием «metastore_lab».
Создайте инстанс Trino
-
Перейдите в раздел Evolution и выберите сервис Managed Trino.
-
Откройте раздел Инстансы.
-
Нажмите Создать инстанс.
-
В блоке Общие параметры заполните поля следующими значениями:
-
Название — trino-lab-2.
-
Вычислительные ресурсы — Small (vCPU 4, RAM 16).
-
Количество нод — 3.
-
Каталоги — выберите из списка каталог Metastore с названием «metastore_lab».
-
-
Нажмите Продолжить.
-
В блоке Сетевые настройки выберите:
-
Зона доступности — зону доступности, для которой создан SNAT-шлюз.
-
Подсеть — подсеть с DNS-сервером, в которой расположен инстанс Managed Metastore.
-
Группа безопасности — группу безопасности.
-
Пользователь — введите имя пользователя.
-
Пароль — секретный ключ.
-
Подключить публичный хост — активируйте переключатель.
-
-
Нажмите Создать.
-
Дождитесь, когда статус инстанса изменится на «Готов».
-
Откройте карточку инстанса Trino. Информация из него понадобится на следующих этапах.
Подключите Trino к DBeaver
-
Откройте приложение DBeaver.
-
В панели сверху нажмите База данных → Новое соединение.
-
В списке соединений выберите Trino.
-
Нажмите Далее заполните поля на вкладке Главное:
-
Хост — публичный хост, указанный в карточке инстанса.
-
Порт — порт, указанный в карточке инстанса.
-
Пользователь — пользователь, указанный в карточке инстанса.
-
Пароль — пароль, указанный в карточке инстанса.
-
-
На вкладке Свойства драйвера измените значение свойства SSL на true.
-
Нажмите Тест соединения.
-
Нажмите Готово.
Слева в списке объектов появится база данных Metastore с названием «metastore_lab».

Работа с управляемыми таблицами
SQL-запросы в следующих шагах мы будем отправлять через DBeaver. Проверять результат будем в CyberDuck.
Ознакомьтесь с разделом Управляемые и внешние таблицы перед началом.
Управляемая таблица в формате .orc
-
Создайте схему.
CREATE SCHEMA IF NOT EXISTS metastore_lab.my_companyВ S3 автоматически создастся каталог warehouse и каталог со схемой my_company.db.
-
Создайте таблицу.
CREATE TABLE IF NOT EXISTS metastore_lab.my_company.employees (id_employee INT, email VARCHAR(255))В S3 создастся каталог employees.
-
Заполните таблицу.
INSERT INTO metastore_lab.my_company.employees values (1, 'xxx@example.com'), (2, 'yyy@example.com'), (3, 'zzz@example.com') -
Проверьте результат.
SELECT * FROM metastore_lab.my_company.employeesВ S3 появится файл в формате .orc.
-
Удалите таблицу.
DROP TABLE metastore_lab.my_company.employees
В результате таблица удалена из Metastore, в S3 все данные вместе с каталогом employees также удалены.
Управляемая таблица в текстовом формате
-
Создайте схему.
CREATE SCHEMA IF NOT EXISTS metastore_lab.my_companyВ S3 автоматически создастся каталог warehouse и каталог со схемой my_company.db.
-
Сохраните данные в текстовом формате.
CREATE TABLE IF NOT EXISTS metastore_lab.my_company.employees_csv (id_employee INT, email VARCHAR(255))WITH (format = 'TEXTFILE') -
Заполните таблицу.
INSERT INTO metastore_lab.my_company.employees_csv values (1, 'xxx@example.com'), (2, 'yyy@example.com'), (3, 'zzz@example.com') -
Проверьте результат.
SELECT * FROM metastore_lab.my_company.employees_csvВ S3 появится файл в формате .gz.
-
Удалите таблицу.
DROP TABLE metastore_lab.my_company.employees_csv
В результате таблица удалена из Metastore, в S3 все данные вместе с каталогом employees_csv также удалены.
Работа с внешними таблицами
Работать с внешними таблицами мы будем через CyberDuck.
-
Запустите CyberDuck.
-
Откройте бакет S3.
-
Создайте каталог с названием data.
-
Подготовьте файл с данными в формате .csv:
-
колонки: id, email
-
значения в колонке id: 1, 2, 3
-
значения в колонке email: xxx@example.com, yyy@example.com, zzz@example.com
-
-
Добавьте файл в каталог «data» на S3.
-
Запустите DBeaver.
-
Через DBeaver создайте схему.
CREATE SCHEMA IF NOT EXISTS metastore_lab.my_company -
Создайте таблицу.
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) -
Проверьте результат.
SELECT * FROM metastore_lab.my_company.csv_external -
Подготовьте новый файл с данными в формате .csv:
-
колонки: id, email
-
значения в колонке id: 4, 5, 6
-
значения в колонке email: aaa@example.com, bbb@example.com, ccc@example.com
-
-
Добавьте файл в каталог «data» на S3. В этом сценарии мы имитируем поступление новых данных из другой системы.
-
Проверьте результат.
SELECT * FROM metastore_lab.my_company.csv_externalСистема считывает данные из двух разных файлов с одинаковой структурой и с одинаковым разрешением, как если бы это был один файл.
-
Заполните таблицу новыми значениями.
INSERT INTO metastore_lab.my_company.csv_external values ('7', 'mmm@example.com'), ('8', 'nnn@example.com'), ('9', 'ooo@example.com') -
Проверьте результат.
SELECT * FROM metastore_lab.my_company.csv_externalВ S3 появится файл в формате .gz.
-
Удалите таблицу.
DROP TABLE metastore_lab.my_company.csv_external
В результате таблица удалена из Metastore. В отличие от управляемых таблиц файлы в S3 остаются доступными.
- Перед началом работы
- Создайте инстанс Managed Metastore
- Создайте каталог Metastore
- Создайте инстанс Trino
- Подключите Trino к DBeaver
- Работа с управляемыми таблицами
- Работа с внешними таблицами