Облачная платформаEvolution

Подключение Managed Trino к Iceberg


С помощью этого руководства вы настроите инстанс Managed Trino для работы с форматом данных Iceberg. В качестве примера вы создадите и заполните таблицу с данными сотрудников и выполните чтение данных таблицы в определенной точке времени.

Вы будете использовать следующие сервисы:

  • Managed Trino — сервис, который предоставляет массивно-параллельный аналитический SQL-движок для обработки больших объемов данных из разных источников.

  • Managed Metastore — сервис для хранения и управления метаданными из разных источников.

  • Object Storage — объектное S3-хранилище с бесплатным хранением файлов объемом до 15 ГБ.

Шаги:

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

Располагайте создаваемые сущности в одной VPC и используйте единые сетевые параметры.

  1. Перейдите в раздел Evolution.

  2. Создайте публичный SNAT-шлюз, чтобы обеспечить инстансу доступ в интернет и связь с внешними источниками.

  3. Создайте кластер Data Platform с названием dp-labs.

  4. Создайте бакет Object Storage, в котором будут храниться таблицы и схемы.

  5. Cоздайте инстанс Managed Metastore с названием iceberg-metastore-lab. В качестве хранилища укажите созданный ранее бакет Object Storage.

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

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

1. Создайте ключи для доступа к Object Storage

На этом шаге вы создадите секреты для настройки доступа к Object Storage.

  1. Перейдите в раздел Пользователи на вкладку Сервисные аккаунты.

  2. Нажмите на название аккаунта, для которого необходимо сгенерировать ключ доступа. Если такого аккаунта нет, создайте его. Убедитесь, что у выбранного аккаунта есть роль с доступом к сервису Object Storage.

  3. В блоке Учетные данные доступа откройте вкладку Ключи доступа.

  4. Нажмите Создать ключ.

  5. Введите краткое описание ключа.

  6. Задайте время жизни ключа или выберите вариант Бессрочно. Бессрочные ключи менее безопасны. Рекомендуем выбирать ограничение по периоду действия или обновлять ключи самостоятельно не менее одного раза в год.

  7. Нажмите Создать. Сервис сгенерирует Key ID (логин) и Key Secret (пароль). Скопируйте и сохраните эти значения. После того как вы закроете это окно, посмотреть их будет нельзя.

  8. На верхней панели слева нажмите Кнопка с изображением девяти точек и выберите Хранение данных → Object Storage.

  9. Скопируйте ID тенанта.

  10. На верхней панели слева нажмите Кнопка с изображением девяти точек и выберите Управление → Secret Management.

  11. Создайте access key:

    1. Нажмите Добавить секрет.

    2. В поле Путь введите dp-labs-access-key.

    3. В блоке Значение секрета выберите Стандартый режим и введите значение в формате tenant_id:key_id, где:

      • tenant_id — скопированное ранее значение ID тенанта;

      • key_id — значение Key ID, скопированное и сохраненное ранее при создании ключа доступа.

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

  12. Создайте secret key:

    1. Нажмите Добавить секрет.

    2. В поле Путь укажите dp-labs-secret-key.

    3. В блоке Значение секрета выберите Стандартый режим и укажите значение Key Secret, скопированное и сохраненное ранее при создании ключа доступа.

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

2. Создайте каталог Managed Trino

На этом шаге вы подготовите каталог Managed Trino.

  1. Перейдите в Платформа данных → Managed Trino.

  2. Нажмите Создать и выберите Каталог.

  3. В блоке Общие параметры в поле Название введите trino_iceberg_lab.

  4. В блоке Настройки каталога заполните поля следующими значениями:

    • Коннекторiceberg.

    • КаталогMetastore.

    • Thrift URL — Thrift URL из карточки инстанса Managed Metastore.

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

    • Идентификатор ключа доступаdp-labs-access-key.

    • Секретный ключ доступаdp-labs-secret-key.

    • Регион S3 — введите ru-central-1.

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

3. Создайте инстанс Managed Trino

На этом шаге вы подготовите инстанс Managed Trino.

  1. Перейдите в раздел Инстансы.

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

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

    • Названиеtrino-iceberg-lab-instance.

    • Кластерdp-labs.

  4. В блоке Конфигурация заполните поля следующими значениями:

    • Версия0.1.7.

    • РежимОсновной.

    • Вычислительные ресурсы4 vCPU 4 / RAM 16.

    • Количество нод3. Чтобы задать количество нод, отключите опцию Автомасштабирование.

  5. В блоке Настройки каталога укажите созданный ранее каталог trino_iceberg_lab.

  6. Нажмите Продолжить.

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

    • Зона доступностизона доступности, для которой создан SNAT-шлюз.

    • Подсеть — подсеть с DNS-сервером, в которой расположен инстанс Managed Metastore.

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

    • Пользователь — имя пользователя, например user1.

    • Парольdp-labs-access-key.

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

  9. Дождитесь, пока статус инстанса Managed Trino изменится на «Готов».

4. Отправьте SQL-запросы

На этом шаге вы с помощью SQL-запросов создадите таблицу, добавите в нее данные и проверите изменения.

  1. В приложении DBeaver в панели сверху нажмите Редактор SQL → Новый редактор SQL.

  2. Выполните запрос:

    SHOW CATALOGS

    В списке появится коннектор trino_iceberg_lab.

  3. Создайте схему:

    CREATE SCHEMA IF NOT EXISTS trino_iceberg_lab.my_company_iceberg
  4. Создайте таблицу в каталоге Iceberg:

    CREATE TABLE IF NOT EXISTS trino_iceberg_lab.my_company_iceberg.employees
    (
    id_employee INT,
    email VARCHAR(255)
    )
    WITH (
    format = 'PARQUET'
    )
  5. Вставьте данные в таблицу:

    INSERT INTO trino_iceberg_lab.my_company_iceberg.employees
    values (1, 'xxx@example.com'), (2, 'yyy@example.com'), (3, 'zzz@example.com')
  6. Чтобы убедиться, что данные записаны, прочитайте данные таблицы:

    SELECT *
    FROM trino_iceberg_lab.my_company_iceberg.employees;
  7. Вставьте данные в таблицу:

    INSERT INTO trino_iceberg_lab.my_company_iceberg.employees
    values (4, 'ttt@example.com'), (5, 'ggg@example.com'), (6, 'iii@example.com')
  8. Чтобы убедиться, что данные записаны, прочитайте данные таблицы:

    SELECT *
    FROM trino_iceberg_lab.my_company_iceberg.employees
  9. Прочитайте историю таблицы:

    SELECT *
    FROM trino_iceberg_lab.my_company_iceberg."employees$history"
    ORDER BY made_current_at

    В результате выполнения запроса будет выведена история изменений таблицы, содержащая записи о создании таблицы и добавлении в нее новых строк.

  10. Добавьте данные в таблицу:

    INSERT INTO trino_iceberg_lab.my_company_iceberg.employees
    values (7, 'qqq@example.com'), (8, 'www@example.com'), (9, 'eee@example.com')
  11. Чтобы проверить, что появилась еще одна запись, прочитайте данные из таблицы:

    SELECT *
    FROM trino_iceberg_lab.my_company_iceberg."employees$history"
    ORDER BY made_current_at
  12. Чтобы понаблюдать, как таблица менялась со временем, прочитайте данные из таблицы, подставляя в запрос вместо YYYY-MM-DD HH:MM:SS.000 различные значения из столбца made_current_at:

    SELECT *
    FROM trino_iceberg_lab.my_company_iceberg.employees
    FOR TIMESTAMP AS OF TIMESTAMP 'YYYY-MM-DD HH:MM:SS.000 +0300'

Результат

Вы настроили инстанс Managed Trino для работы с данными в формате Iceberg. Вы научились создавать таблицы с помощью DBeaver и читать данные, соотетствующие определенному моменту времени.