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

Интеграция с Managed Trino и Object Storage


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

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

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

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

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

Шаги:

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

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

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

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

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

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

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 Metastore

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

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

  2. Перейдите в раздел Hive Metastore.

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

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

    • Названиеmetastore-lab.

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

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

    • Версия0.1.8 (3.0).

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

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

    • Файловая системаS3.

    • ИсточникObject Storage.

    • Путь до warehouse — созданный ранее бакет Object Storage.

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

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

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

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

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

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

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

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

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

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

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

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

    • Thrift URL — значение Thrift URL из карточки инстанса metastore-lab.

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

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

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

    • Регион S3ru-central-1.

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

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

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

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

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

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

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

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

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

    • Версия0.1.7.

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

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

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

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

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

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

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

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

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

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

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

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

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

5. Создайте управляемую таблицу .orc

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

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

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

    CREATE SCHEMA IF NOT EXISTS trino_lab.my_company

    В Object Storage будут создана папка со схемой my_company.db.

  3. Создайте таблицу:

    CREATE TABLE IF NOT EXISTS trino_lab.my_company.employees (id_employee INT, email VARCHAR(255))
  4. Заполните таблицу:

    INSERT INTO trino_lab.my_company.employees values (1, 'xxx@example.com'), (2, 'yyy@example.com'), (3, 'zzz@example.com')

    В Object Storage появится файл в формате .orc.

  5. Проверьте результат:

    SELECT * FROM trino_lab.my_company.employees
  6. Удалите таблицу:

    DROP TABLE trino_lab.my_company.employees

В результате из Managed Metastore удалена таблица, а из Object Storage удалена папка employees и все данные.

6. Создайте управляемую таблицу в текстовом формате

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

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

    CREATE SCHEMA IF NOT EXISTS trino_lab.my_company

    В Object Storage будет создана папка со схемой my_company.db.

  2. Создайте таблицу в текстовом формате:

    CREATE TABLE IF NOT EXISTS trino_lab.my_company.employees_csv (id_employee INT, email VARCHAR(255))
    WITH (
    format = 'TEXTFILE'
    )
  3. Заполните таблицу:

    INSERT INTO trino_lab.my_company.employees_csv values (1, 'xxx@example.com'), (2, 'yyy@example.com'), (3, 'zzz@example.com')

    В Object Storage появится файл в формате .gz.

  4. Проверьте результат:

    SELECT * FROM trino_lab.my_company.employees_csv
  5. Удалите таблицу:

    DROP TABLE trino_lab.my_company.employees_csv

В результате из Managed Metastore будет удалена таблица, а из Object Storage — папка employees_csv и все данные.

7. Создайте внешнюю таблицу

На этом шаге вы загрузите файлы с данными в Object Storage. С помощью JDBC-клиента DBeaver отправите SQL-запросы и создадите внешнюю таблицу для управления этими данными. Вы проверите, как система обрабатывает данные из разных файлов.

  1. Откройте бакет Object Storage.

  2. Создайте папку с названием «data».

  3. Подготовьте файл с данными в формате .csv:

    • колонки: id, email

    • значения в колонке id: 1, 2, 3

    • значения в колонке email: xxx@example.com, yyy@example.com, zzz@example.com

  4. Загрузите файл в папку data в Object Storage.

  5. В приложении DBeaver создайте схему:

    CREATE SCHEMA IF NOT EXISTS trino_lab.my_company
  6. Создайте таблицу:

    CREATE TABLE IF NOT EXISTS trino_lab.my_company.csv_external (id VARCHAR, email VARCHAR)
    WITH (
    external_location = 's3a://<bucket-name>/data',
    format = 'CSV',
    csv_separator = ';',
    skip_header_line_count = 1
    )

    В строке external_location = 's3a://<bucket-name>/data' вместо <bucket-name> подставьте название используемого бакета.

  7. Проверьте результат:

    SELECT * FROM trino_lab.my_company.csv_external
  8. Подготовьте новый файл с данными в формате .csv:

    • колонки: id, email

    • значения в колонке id: 4, 5, 6

    • значения в колонке email: aaa@example.com, bbb@example.com, ccc@example.com

  9. Добавьте файл в папку data в Object Storage. Это имитирует поступление новых данных из другой системы.

  10. Проверьте результат.

    SELECT * FROM trino_lab.my_company.csv_external

    Система считывает данные из двух разных файлов с одинаковой структурой и с одинаковым разрешением, как если бы это был один файл.

  11. Удалите таблицу.

    DROP TABLE trino_lab.my_company.csv_external

    В результате таблица будет удалена из Managed Metastore, но файлы в Object Storage останутся.

Результат

С помощью этого руководства вы настроили взаимодействие Managed Trino, Managed Metastore и Object Storage. Вы научились использовать JDBC-клиент DBeaver для отправки SQL-запросов и работать с управляемыми и внешними таблицами.