Настройка Starburst/Trino
profiles.yml предназначен только для пользователей dbt CoreЕсли вы используете dbt Cloud, вам не нужно создавать файл profiles.yml. Этот файл предназначен только для пользователей dbt Core. Чтобы подключить вашу платформу данных к dbt Cloud, обратитесь к разделу О платформах данных.
- Поддерживается: Starburst Data, Inc.
- Авторы: Marius Grama, Przemek Denkiewicz, Michiel de Smet, Damian Owsianny
- Репозиторий на GitHub: starburstdata/dbt-trino
- Пакет на PyPI:
dbt-trino - Канал в Slack: #db-starburst-and-trino
- Поддерживаемая версия dbt Core: v0.20.0 и новее
- Поддержка dbt Cloud: Supported
- Минимальная версия платформы данных: n/a
Установка dbt-trino
Используйте pip для установки адаптера. До версии 1.8 установка адаптера автоматически устанавливала dbt-core и любые дополнительные зависимости. Начиная с версии 1.8, установка адаптера не устанавливает автоматически dbt-core. Это связано с тем, что адаптеры и версии dbt Core были разделены, и мы больше не хотим перезаписывать существующие установки dbt-core.
Используйте следующую команду для установки:
Конфигурация dbt-trino
Для конфигурации, специфичной для Starburst/Trino, пожалуйста, обратитесь к конфигурациям Starburst/Trino.
Подключение к Starburst/Trino
Чтобы подключиться к платформе данных с помощью dbt Core, создайте соответствующие ключи/значения profile и target в YAML-файле profiles.yml дл я ваших кластеров Starburst/Trino. Этот YAML-файл dbt находится в директории .dbt/ в вашем домашнем каталоге. Для получения дополнительной информации обратитесь к Профили подключения и profiles.yml.
Параметры для настройки подключения предназначены для кластеров Starburst Enterprise, Starburst Galaxy и Trino. Если не указано иное, под "кластером" подразумевается любой из этих продуктов.
Параметры хоста
Следующие поля профиля всегда обязательны, за исключением user, который также обязателен, если вы не используете методы аутентификации oauth, oauth_console, cert или jwt.
| Поле | Пример | Описание |
|---|---|---|
host | mycluster.mydomain.comФормат для Starburst Galaxy:
| Имя хоста вашего кластера. Не включайте префикс http:// или https://. |
database | my_postgres_catalog | Имя каталога в вашем кластере. |
schema | my_schema | Имя схемы в каталоге вашего кластера. Не рекомендуется использовать имена схем с заглавными или смешанными буквами. |
port | 443 | Порт для подключения к вашему кластеру. По умолчанию это 443 для кластеров с включенным TLS. |
user | Формат для Starburst Enterprise или Trino:
Формат для Starburst Galaxy:
| Имя пользователя (учетной записи) для входа в ваш кластер. При подключении к кластерам Starburst Galaxy вы должны включить роль пользователя в качестве суффикса к имени пользователя. |
Роли в Starburst Enterprise
Если вы подключаетесь к кластеру Starburst Enterprise с включенными встроенными средствами управления доступом, необходимо указать роль, используя формат, описанный в разделе Дополнительные параметры. Если роль не указана, будет использована роль по умолчанию для предоставленного имени пользователя.
Схемы и базы данных
При выборе каталога и схемы убедитесь, что у пользователя есть права на чтение и запись для обоих. Этот выбор не ограничивает вашу возможность выполнять запросы к каталогу. Вместо этого они служат местоположением по умолчанию для материализации таблиц и представлений. Кроме того, коннектор Trino, используемый в каталоге, должен поддерживать создание таблиц. Это значение по умолчанию можно изменить позже в вашем проекте dbt.
Дополнительные параметры
Следующие поля про филя являются необязательными для настройки. Они позволяют настроить сессию вашего кластера и dbt для вашего подключения.
| Поле профиля | Пример | Описание |
|---|---|---|
threads | 8 | Сколько потоков должен использовать dbt (по умолчанию 1) |
roles | system: analyst | Роли каталога могут быть установлены в необязательном параметре roles с использованием следующего формата: catalog: role. |
session_properties | query_max_run_time: 4h | Устанавливает свойства сессии Trino, используемые в подключении. Выполните SHOW SESSION, чтобы увидеть доступные опции |
prepared_statements_enabled | true или false | Включить использование подготовленных операторов Trino (используется в командах dbt seed) (по умолчанию: true) |
retries | 10 | Настройте, сколько раз все операции с базой данных будут повторяться при возникновении проблем с подключением (по умолчанию: 3) |
timezone | Europe/Brussels | Часовой пояс для сессии Trino (по умолчанию: локальный часовой пояс на стороне клиента) |
http_headers | X-Trino-Client-Info: dbt-trino | HTTP-заголовки для отправки вместе с запросами к Trino, указанные в виде YAML-словаря пар (заголовок, значение). |
http_scheme | https или http | HTTP-схема для использования в запросах к Trino (по умолчанию: http, или https, если kerberos, ldap или jwt) |
Параметры аутентификации
Методы аутентификации, поддерживаемые dbt Core:
ldap— LDAP (имя пользователя и пароль)kerberos— Kerberosjwt— JSON Web Token (JWT)certificate— Аутентификация на основе сертификатовoauth— Открытая аутентификация (OAuth)oauth_console— Открытая аутентификация (OAuth) с URL аутентификации, выводимым в консольnone— Нет, без аутентификации
Установите поле method на метод аутентификации, который вы собираетесь использовать для подключения. Для общего вв едения в аутентификацию в Trino см. Trino Security: Authentication types.
Нажмите на один из этих методов аутентификации для получения более подробной информации о том, как настроить ваш профиль подключения. Каждая вкладка также включает пример конфигурационного файла profiles.yml для вашего ознакомления.
- LDAP
- Kerberos
- JWT
- Certificate
- OAuth
- OAuth (console)
- None
Следующая таблица перечисляет параметры аутентификации для настройки LDAP.
Для получения дополнительной информации обратитесь к LDAP аутентификация в документации Trino.
| Поле профиля | Пример | Описание |
|---|---|---|
method | ldap | Установите LDAP в качестве метода аутентификации. |
user | Формат для Starburst Enterprise или Trino:
Формат для Starburst Galaxy:
| Имя пользователя (учетной записи) для входа в ваш кластер. При подключении к кластерам Starburst Galaxy вы должны включить роль пользователя в качестве суффикса к имени пользователя. |
password | abc123 | Пароль для аутентификации. |
impersonation_user (необязательно) | impersonated_tom | Переопределите предоставленное имя пользователя. Это позволяет вам выдавать себя за другого пользователя. |
Пример profiles.yml для LDAP
trino:
target: dev
outputs:
dev:
type: trino
method: ldap
user: [user]
password: [password]
host: [hostname]
database: [database name]
schema: [your dbt schema]
port: [port number]
threads: [1 or more]
Следующая таблица перечисляет параметры аутентификации для настройки Kerberos.
Для получения дополнительной информации обратитесь к Kerberos аутентификация в документации Trino.
| Поле профиля | Пример | Описание |
|---|---|---|
method | kerberos | Установите Kerberos в качестве метода аутентификации. |
user | commander | Имя пользователя для аутентификации |
keytab | /tmp/trino.keytab | Путь к keytab |
krb5_config | /tmp/krb5.conf | Путь к конфигурации |
principal | trino@EXAMPLE.COM | Принципал |
service_name (необязательно) | abc123 | Имя сервиса (по умолчанию trino) |
hostname_override (необязательно) | EXAMPLE.COM | Имя хоста Kerberos для хоста, чье DNS-имя не совпадает |
mutual_authentication (необязательно) | false | Логический флаг для взаимной аутентификации |
force_preemptive (необязательно) | false | Логический флаг для предварительного инициирования обмена Kerberos GSS |
sanitize_mutual_error_response (необязательно) | true | Логический флаг для удаления содержимого и заголовков из ответов об ошибках |
delegate (необязательно) | false | Логический флаг для делегирования учетных данных (GSS_C_DELEG_FLAG) |
Пример profiles.yml для Kerberos
trino:
target: dev
outputs:
dev:
type: trino
method: kerberos
user: commander
keytab: /tmp/trino.keytab
krb5_config: /tmp/krb5.conf
principal: trino@EXAMPLE.COM
host: trino.example.com
port: 443
database: analytics
schema: public
Следующая таблица перечисляет параметры аутентификации для настройки JSON Web Token.
Для получения дополнительной информации обратитесь к JWT аутентификация в документации Trino.
| Поле профиля | Пример | Описание |
|---|---|---|
method | jwt | Установите JWT в качестве метода аутентификации. |
jwt_token | aaaaa.bbbbb.ccccc | Строка JWT. |
Пример profiles.yml для JWT
trino:
target: dev
outputs:
dev:
type: trino
method: jwt
jwt_token: [my_long_jwt_token_string]
host: [hostname]
database: [database name]
schema: [your dbt schema]
port: [port number]
threads: [1 or more]
Следующая таблица перечисляет параметры аутентификации для настройки сертификатов.
Для получения дополнительной информации обратитесь к Аутентификация на основе сертификатов в документации Trino.
| Поле профиля | Пример | Описание |
|---|---|---|
method | certificate | Установите аутентификацию на основе сертификатов в качестве метода |
client_certificate | /tmp/tls.crt | Путь к клиентскому сертификату |
client_private_key | /tmp/tls.key | Путь к закрытому ключу клиента |
cert | Полный путь к файлу сертификата |
Пример profiles.yml для сертификатов
trino:
target: dev
outputs:
dev:
type: trino
method: certificate
cert: [path/to/cert_file]
client_certificate: [path/to/client/cert]
client_private_key: [path to client key]
database: [database name]
schema: [your dbt schema]
port: [port number]
threads: [1 or more]
Единственный параметр аутентификации для настройки OAuth 2.0 — это method: oauth. Если вы используете Starburst Enterprise или Starburst Galaxy, вы должны включить OAuth 2.0 в Starburst, прежде чем сможете использовать этот метод аутентификации.
Для получения дополнительной информации обратитесь как к OAuth 2.0 аутентификация в документации Trino, так и к README для клиента Trino на Python.
Рекомендуется установить keyring для кэширования токена OAuth 2.0 между несколькими вызовами dbt, выполнив python -m pip install 'trino[external-authentication-token-cache]'. Пакет keyring не устанавливается по умолчанию.
Пример profiles.yml для OAuth
sandbox-galaxy:
target: oauth
outputs:
oauth:
type: trino
method: oauth
host: bunbundersders.trino.galaxy-dev.io
catalog: dbt_target
schema: dataders
port: 443
Единственный параметр аутентификации для настройки OAuth 2.0 — это method: oauth_console. Если вы используете Starburst Enterprise или Starburst Galaxy, вы должны включить OAuth 2.0 в Starburst, прежде чем сможете использовать этот метод аутентификации.
Для получения дополнительной информации обратитесь как к OAuth 2.0 аутентификация в документации Trino, так и к README для клиента Trino на Python.
Единственное отличие между oauth_console и oauth заключается в следующем:
oauth— URL аутентификации автоматически открывается в браузере.oauth_console— URL выводится в консоль.
Рекомендуется установить keyring для кэширования токена OAuth 2.0 между несколькими вызовами dbt, выполнив python -m pip install 'trino[external-authentication-token-cache]'. Пакет keyring не устанавливается по умолчанию.
Пример profiles.yml для OAuth
sandbox-galaxy:
target: oauth_console
outputs:
oauth:
type: trino
method: oauth_console
host: bunbundersders.trino.galaxy-dev.io
catalog: dbt_target
schema: dataders
port: 443
Вам не нужно настраивать аутентификацию (method: none), однако dbt Labs настоятельно не рекомендует использовать это в реальных приложениях. Его использование предназначено только для игрушечных целей (например, для экспериментов), таких как локальные примеры, например, запуск Trino и dbt полностью в одном контейнере Docker.
Пример profiles.yml без аутентификации
trino:
target: dev
outputs:
dev:
type: trino
method: none
user: commander
host: trino.example.com
port: 443
database: analytics
schema: public