Подключение из Trino#
Trino — это open-source проект для обработки больших данных из разных источников.
Подключение к CedrusData Catalog из Trino происходит с помощью коннектора Iceberg.
Примечание
Мы рекомендуем использовать CedrusData — высокопроизводительную систему на основе Trino, содержащую важные улучшения безопасности и производительности. CedrusData зарегистрирован в реестре российского ПО. Коммерческие пользователи CedrusData обеспечены профессиональной технической поддержкой и оперативно получают новые улучшения, отсутствующие в Trino.
Инструкции по интеграции CedrusData Catalog и CedrusData приведены в Подключение из CedrusData.
Подготовка#
Убедитесь, что CedrusData Catalog содержит хотя бы один Iceberg каталог
Получите постоянный или временный токен доступа CedrusData Catalog
Конфигурация Trino#
Базовая конфигурация каталога Iceberg REST Catalog в Trino для подключения к CedrusData Catalog приведена ниже:
iceberg.catalog.type=rest
iceberg.rest-catalog.uri=<адрес_CedrusData_Catalog>
iceberg.rest-catalog.warehouse=<имя_каталога_Iceberg_в_CedrusData_Catalog>
iceberg.rest-catalog.security=oauth2
iceberg.rest-catalog.oauth2.<тип_аутентификации>=<токен_доступа_CedrusData_Catalog>
iceberg.rest-catalog.session=<тип_сессии>
Где:
<адрес_CedrusData_Сatalog>
— адрес, по которому доступен Iceberg REST Catalog интерфейс CedrusData Catalog (http(s)://host[:port]/catalog/iceberg
)<имя_каталога_Iceberg_в_CedrusData_Catalog>
— имя объекта Iceberg catalog, зарегистрированного в CedrusData Catalog<тип_аутентификации>
— механизм аутентификации в CedrusData Catalog (credential
илиtoken
)<токен_доступа_CedrusData_Catalog>
— токен доступа CedrusData Catalog: постоянный токен доступа для типа аутентификацииcredential
; постоянный иди временный токен доступа для типа аутентификацииtoken
<тип_сессии>
—none
, чтобы выполнять команды от системного пользователя;user
— чтобы осуществлять имперсонацию пользователей CedrusData в CedrusData Catalog (в этом случае<тип_аутентификации>
должен иметь значениеcredential
).
Кроме этого, вы должны задать конфигурацию файловой системы для доступа к файловой системе. В конце документа приведен пример полной конфигурации для доступа к S3-совместимой файловой системе.
Пример#
Инструкции ниже описывают, как интегрировать локальный экземпляр Trino с CedrusData Catalog.
Создайте файловую систему CedrusData Catalog на основе MinIO согласно инструкциям. Не останавливайте Docker-контейнеры.
Создайте Iceberg каталог с именем
ice_prod
в CedrusData Catalog:docker exec -it example-catalog catalog iceberg catalog create \ --catalog-name ice_prod \ --file-system-name minio \ --file-system-location s3://ice-bucket
Создайте файл
ice.properties
, содержащий конфигурацию Iceberg каталога Trino:connector.name=iceberg iceberg.catalog.type=REST iceberg.rest-catalog.uri=http://example-catalog:9080/catalog/iceberg iceberg.rest-catalog.warehouse=ice_prod iceberg.rest-catalog.security=oauth2 iceberg.rest-catalog.oauth2.credential=${ENV:CATALOG_ACCESS_TOKEN} fs.hadoop.enabled=false fs.native-s3.enabled=true s3.endpoint=http://example-minio:9000 s3.region=us-east-1 s3.path-style-access=true s3.aws-access-key=${ENV:MINIO_ACCESS_KEY} s3.aws-secret-key=${ENV:MINIO_SECRET_KEY}
Запустите Docker-контейнер Trino. Мы передадим ключи MinIO и токен доступа CedrusData Catalog в качестве переменных окружения, чтобы нам не писать их в явном виде в дальнейшем:
CATALOG_ACCESS_TOKEN=$(docker exec example-catalog cat /data/catalog/admin-access-token) && \ docker run -d \ --name example-trino \ --network=example-network \ -e CATALOG_ACCESS_TOKEN=$CATALOG_ACCESS_TOKEN \ -e MINIO_ACCESS_KEY=accesskey \ -e MINIO_SECRET_KEY=secretkey \ -p 8080:8080 \ -v ${PWD}/ice.properties:/etc/trino/catalog/ice.properties \ trinodb/trino
Запустите CLI утилиту Trino:
docker exec -it example-trino trino
Выполните ряд команд SQL:
CREATE SCHEMA IF NOT EXISTS ice.hr; DROP TABLE IF EXISTS ice.hr.employee; CREATE TABLE ice.hr.employee(id BIGINT, name VARCHAR(100)); INSERT INTO ice.hr.employee VALUES (1, 'John'); SELECT * FROM ice.hr.employee;
Пройдите в консоль MinIO http://localhost:9001 (имя пользователя
accesskey
, парольsecretkey
), и ознакомьтесь с созданными файлам Iceberg в директорииice-bucket/hr/employee
.Получите список таблиц Iceberg через утилиту командной строки CedrusData Catalog:
docker exec -it example-catalog catalog iceberg table list
(при необходимости) Остановите контейнер CedrusData:
docker rm -f example-trino
Очистите остальные ресурсы, следуя последнему шагу инструкции.