Подключение Trino к Iceberg
В лабораторной работе вы подготовите инстанс Trino для работы с форматом данных Iceberg.
Постановка задачи
Создать и заполнить таблицу с данными сотрудников.
Прочитать данные таблицы в определенной точке времени, используя формат данных Iceberg.
Перед началом работы
Зарегистрируйтесь в личном кабинете Cloud.ru.
Если вы уже зарегистрированы, войдите под своей учетной записью.
Создайте публичный SNAT-шлюз, чтобы обеспечить инстансу доступ в интернет и связь с внешними источниками.
Создайте бакет Object Storage, в котором будут храниться таблицы и схемы.
Создайте секреты в сервисе Secret Manager для доступа к Object Storage. Понадобится сохранить идентификатор ключа доступа (access key) и секретный ключ доступа (key secret).
Установите JDBC-клиент DBeaver.
Внимание
Все сущности должны располагаться в одной VPC и подсетях одного типа.
Создайте инстанс Managed Metastore
Перейдите в раздел Evolution и выберите сервис Managed Metastore.
Откройте раздел Инстансы.
Нажмите Создать инстанс.
В блоке Общие параметры заполните поля следующими значениями:
Название — iceberg-metastore-lab.
База данных — выберите базу данных.
VPC — выберите VPC-сеть. В этой сети будут располагаться все сущности.
Зона доступности — выберите зону доступности, для которой создан SNAT-шлюз.
Подсеть — выберите подсеть.
В блоке Настройки сервера заполните поля следующими значениями:
Название — mserver-iceberg-lab.
Группа безопасности — выберите группу безопасности.
Группа логов — выберите группу логов.
Файловая система — S3.
Источник — Object Storage.
Бакет — выберите созданный бакет Object Storage.
Дождитесь, когда статус инстанса изменится на «Готов».
Откройте карточку инстанса. Информация об инстансе понадобится при создании подключения Trino.
Создайте подключение
Перейдите в раздел Evolution и выберите сервис Managed Metastore.
Откройте раздел Подключения.
Нажмите Создать подключение.
Заполните поля следующими значениями:
Название — metastore-iceberg-lab.
Коннектор — Iceberg.
Каталог — Metastore.
Thrift URL — Thrift URL, скопированный с карточки Metastore.
Эндпоинт —
https://s3.cloud.ru
.Идентификатор ключа доступа — access key, выбирается из Secret Manager.
Секретный ключ доступа — secret key, выбирается из Secret Manager.
Регион S3 —
ru-central-1
.
Нажмите Создать.
На странице Managed Trino в разделе Подключения появится запись с названием «metastore-iceberg-lab».
Создайте инстанс Trino
Перейдите в раздел Evolution и выберите сервис Managed Trino.
Откройте раздел Инстансы.
Нажмите Создать инстанс.
В блоке Общие параметры заполните поля следующими значениями:
Название — trino-iceberg-lab.
Вычислительные ресурсы — Small (vCPU 4, RAM 16).
Количество нод — 3.
Подключения — выберите из списка подключение Metastore с названием «metastore-iceberg-lab».
Нажмите Продолжить.
В блоке Сетевые настройки заполните поля:
VPC — выберите сеть VPC.
Зона доступности — выберите зону доступности, для которой создан SNAT-шлюз.
Подсеть — выберите подсеть, в которой расположен инстанс Managed Metastore.
Группа безопасности — выберите группу безопасности.
Пользователь — введите имя пользователя.
Пароль — выберите секретный ключ.
Подключить публичный хост — активируйте опцию.
Нажмите Создать.
Дождитесь, когда статус инстанса изменится на «Готов».
Откройте карточку инстанса Trino. Информация из нее понадобится при подключении к DBeaver.
Подключите Trino к DBeaver
Откройте приложение DBeaver.
В панели сверху нажмите
.В списке соединений выберите Trino.
Нажмите Далее и на вкладке Главное заполните поля информацией из карточки инстанса:
Хост
Порт
Пользователь
Пароль
На вкладке Свойства драйвера измените значение свойства
SSL
наtrue
.Нажмите Тест соединения.
Нажмите Готово.
Слева в списке объектов появится база данных Metastore с названием «iceberg-metastore-lab».
Отправьте SQL-запросы
Запустите DBeaver.
Создайте новый редактор SQL и введите команду:
SHOW CATALOGS;
В списке должен появиться коннектор «metastore-iceberg-lab».
Создайте схему:
CREATE SCHEMA IF NOT EXISTS metastore-iceberg-lab.my_company_iceberg;
Создайте таблицу в каталоге Iceberg:
CREATE TABLE IF NOT EXISTS metastore-iceberg-lab.my_company_iceberg.employees ( id_employee INT, email VARCHAR(255) ) WITH ( format = 'PARQUET' );
Вставьте данные в таблицу:
INSERT INTO metastore-iceberg-lab.my_company_iceberg.employees values (1, 'xxx@example.com'), (2, 'yyy@example.com'), (3, 'zzz@example.com');
Прочитайте данные из таблицы, чтобы убедиться, что данные записаны:
SELECT * FROM metastore-iceberg-lab.my_company_iceberg.employees;
Вставьте данные в таблицу:
INSERT INTO metastore-iceberg-lab.my_company_iceberg.employees values (4, 'ttt@example.com'), (5, 'ggg@example.com'), (6, 'iii@example.com');
Прочитайте данные из таблицы, чтобы убедиться, что данные записаны:
SELECT * FROM metastore-iceberg-lab.my_company_iceberg.employees;
Прочитайте историю таблицы:
SELECT * FROM metastore-iceberg-lab.my_company_iceberg."employees$history";
Скопируйте время создания таблицы из предыдущей выдачи в формате
YYYY-MM-DD HH:MM:SS.000
.Прочитайте данные из таблицы в определенной точке (5 минут после создания таблицы).
SELECT * FROM metastore-iceberg-lab.my_company_iceberg.employees FOR TIMESTAMP AS OF TIMESTAMP 'YYYY-MM-DD HH:MM:SS.000 +0300';
Где
YYYY-MM-DD HH:MM:SS.000
вставьте скопированное время создания таблицы.
для юрлиц и ИП