В лабораторной работе вы подготовите инстанс Trino для работы с форматом данных Iceberg.
Постановка задачи
Создать и заполнить таблицу с данными сотрудников.
Прочитать данные таблицы в определенной точке времени, используя формат данных Iceberg.
Перед началом работы
-
Если вы уже зарегистрированы, войдите под своей учетной записью.
Создайте публичный SNAT-шлюз, чтобы обеспечить инстансу доступ в интернет и связь с внешними источниками.
Создайте бакет Object Storage, в котором будут храниться таблицы и схемы.
Создайте секреты в сервисе Secret Management для доступа к Object Storage. Понадобится сохранить идентификатор ключа доступа (access key) и секретный ключ доступа (key secret).
Создайте кластер Data Platform, в котором будет размещен инстанс.
Назовите кластер «dp-labs».
Скачайте и установите root-сертификат на устройство.
Установите JDBC-клиент DBeaver.
Все сущности должны располагаться в одной VPC и подсетях одного типа.
Создайте инстанс Managed Metastore
Перейдите в раздел Evolution и выберите сервис Managed Metastore.
Нажмите Создать инстанс.
В блоке Общие параметры заполните поля следующими значениями:
Название — iceberg-metastore-lab.
Кластер — dp-labs.
Лог-группа — группа, в которой будут храниться логи инстанса.
Файловая система — S3 и выберите Object Storage.
Бакет — созданный бакет Object Storage.
Нажмите Продолжить.
В блоке Сетевые настройки выберите:
Зона доступности — зону доступности, для которой создан SNAT-шлюз.
Подсеть — подсеть с DNS-сервером.
Нажмите Создать.
Дождитесь, когда статус инстанса изменится на «Готов».
Откройте карточку инстанса. Информация об инстансе понадобится при создании каталога Trino.
Создайте каталог
Перейдите в раздел Evolution и выберите сервис Managed Trino.
Нажмите Создать и выберите Каталог.
Заполните поля следующими значениями:
Название — metastore_iceberg_lab.
Коннектор — Iceberg.
Каталог — 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_iceberg_lab».
Создайте инстанс Trino
Перейдите в раздел Evolution и выберите сервис Managed Trino.
Откройте раздел Инстансы.
Нажмите Создать инстанс.
В блоке Общие параметры заполните поля следующими значениями:
Название — trino-iceberg-lab.
Кластер — dp-labs.
Вычислительные ресурсы — vCPU 4, RAM 16.
Количество node — 3.
Нажмите Продолжить.
В блоке Каталог выберите каталог Metastore с названием «metastore_iceberg_lab».
Нажмите Продолжить.
В блоке Сетевые настройки выберите:
Зона доступности — зону доступности, для которой создан SNAT-шлюз.
Подсеть — подсеть, в которой расположен инстанс Managed Metastore.
Подключить публичный хост — активируйте опцию.
Пользователь — имя пользователя.
Пароль — секретный ключ.
Нажмите Создать.
Дождитесь, когда статус инстанса изменится на «Готов».
Откройте карточку инстанса Trino. Информация из нее понадобится при подключении к DBeaver.
Подключите Trino к DBeaver
Добавьте сертификат в Java KeyStore
Запустите терминал и перейдите в директорию, где хотите сохранить JKS-файл.
Введите команду:
keytool -importcert-alias cloudru-root-file <PATH>/dp-cert.crt-keystore <PATH>/cloudru-truststore.jks-storetype JKS-storepass <YOUR-PASSWORD>-nopromptВ строке -file вместо <PATH> укажите путь до скачанного ранее root-сертификата.
В строке -keystore вместо <PATH> укажите путь до места, где будет храниться JKS-файл.
Сохраните путь. Он понадобится при добавлении JKS-файла в DBeaver.
В строке -storepass вместо <YOUR-PASSWORD> задайте пароль для сертификата.
Сохраните пароль. Он понадобится при добавлении JKS-файла в DBeaver.
Подключите 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.employeesvalues (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.employeesvalues (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"ORDER BY made_current_at;В результате выполнения запроса будет выведена история изменений таблицы, содержащая записи о создании таблицы и добавлении в нее новых строк.
Добавьте данные в таблицу:
INSERT INTO metastore_iceberg_lab.my_company_iceberg.employeesvalues (7, 'qqq@example.com'), (8, 'www@example.com'), (9, 'eee@example.com');Прочитайте данные из таблицы, чтобы проверить, что появилась еще одна запись:
SELECT *FROM metastore_iceberg_lab.my_company_iceberg."employees$history"ORDER BY made_current_at;Чтобы понаблюдать, как таблица менялась со временем, прочитайте данные из таблицы, подставляя в запрос различные значения из столбца made_current_at.
SELECT *FROM metastore_iceberg_lab.my_company_iceberg.employeesFOR TIMESTAMP AS OF TIMESTAMP 'YYYY-MM-DD HH:MM:SS.000 +0300';Где YYYY-MM-DD HH:MM:SS.000 — скопированное время создания таблицы.
- Постановка задачи
- Перед началом работы
- Создайте инстанс Managed Metastore
- Создайте каталог
- Создайте инстанс Trino
- Подключите Trino к DBeaver
- Отправьте SQL-запросы