- tocdepth
2
Подключить Trino к S3
В лабораторной работе мы рассмотрим:
сценарий взаимодействия между Managed Trino, Managed Metastore и Object Storage;
отправка запросов через DBeaver;
работу с управляемыми таблицами:
создание;
заполнение;
удаление таблиц из Metastore и S3.
работу с внешними таблицами:
добавление данных в существующую таблицу;
удаление информации о таблице из Metastore.
Перед началом работы
Ознакомьтесь с разделом Управляемые и внешние таблицы. В следующих блоках вам будут встречаться термины «Управляемые таблицы» и «Внешние таблицы».
Подключите сервис Object Storage. С тарифами можно ознакомиться на странице продукта.
Установите JDBC-клиент DBeaver.
Создать бакет Object Storage
Воспроизведите шаги, описанные в Быстром старте Object Storage.
Убедитесь, что бакет доступен. Он должен отобразиться в списке бакетов тенанта в CyberDuck.
Создать инстанс Managed Metastore
Перейдите в раздел Evolution и выберите сервис Managed Metastore.
Нажмите Создать инстанс.
В блоке Общие параметры заполните поля следующими значениями:
Название — metastore-lab;
Файловая система — S3;
Путь до warehouse —
s3a://<bucket>/<warehouse>
bucket — название бакета;
warehouse — название каталога для warehouse;
Эндпоинт —
https://s3.cloud.ru
;Идентификатор ключа доступа — access key, выбирается из Secret Manager;
Секретный ключ доступа — secret key, выбирается из Secret Manager.
В блоке Сетевые настройки заполните поля значениями по умолчанию.
Дождитесь, когда статус инстанса изменится на «Готов».
Нажмите Скопировать thrift URL.
Создать подключение к Managed Metastore
Перейдите в раздел Evolution и выберите сервис Managed Metastore.
Нажмите Создать и выберите Подключение.
Заполните поля следующими значениями:
Название — metastore_lab;
Коннектор — Metastore;
Thrift URL — thrift URL, скопированный с карточки Metastore;
Эндпоинт —
https://s3.cloud.ru
;Идентификатор ключа доступа — access key, выбирается из Secret Manager;
Секретный ключ доступа — secret key, выбирается из Secret Manager.
Нажмите Создать.
На странице Managed Trino во вкладке Подключения появится запись с названием «metastore_lab».
Создать инстанс Trino
Перейдите в раздел Evolution и выберите сервис Managed Trino.
Нажмите Создать и выберите Инстанс Trino.
В блоке Общие параметры заполните поля следующими значениями:
Название — trino-lab-2;
Подключить публичный хост — переключатель активирован;
Пользователь — выберите из списка;
Пароль — секретный ключ сервиса Secret Manager из списка;
Подключения — выберите из списка подключение Metastore с названием «metastore_lab».
В блоке Сетевые настройки заполните поля значениями по умолчанию.
Нажмите Создать.
Дождитесь, когда статус инстанса изменится на «Готов».
Откройте карточку инстанса 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 файлы остаются.
для Dev & Test