Настройка 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