Менеджеры session properties#
Администраторы могут добавлять session properties для управления поведением подмножеств своей нагрузки. Эти свойства являются значениями по умолчанию и могут быть переопределены пользователями, если у них есть соответствующие права. Session properties могут использоваться для управления потреблением ресурсов, включения или отключения функций и изменения характеристик запросов. Менеджеры session properties являются подключаемыми (pluggable).
Добавьте файл etc/session-property-config.properties со следующим содержимым,
чтобы включить встроенный менеджер, который читает JSON конфигурационный файл:
session-property-config.configuration-manager=file
session-property-manager.config-file=etc/session-property-config.json
Измените значение session-property-manager.config-file, чтобы указать путь к
JSON конфигурационному файлу, который может быть абсолютным или относительным
по отношению к директории данных Trino.
Этот конфигурационный файл состоит из списка правил сопоставления (match rules), каждое из которых задаёт список условий, которым должен соответствовать запрос, и список session properties, которые должны применяться по умолчанию. Все подходящие правила участвуют в формировании итогового списка session properties. Правила применяются в порядке их указания. Правила, указанные позже в файле, переопределяют значения свойств, заданные ранее.
Правила сопоставления (Match rules)#
user(необязательно): регулярное выражение для сопоставления с именем пользователя.source(необязательно): регулярное выражение для сопоставления со строкой источника.queryType(необязательно): строка для сопоставления с типом отправленного запроса:DATA_DEFINITION: запросы, которые изменяют/создают/удаляют метаданные схем/таблиц/представлений, а также управляют prepared statements, привилегиями, сессиями и транзакциями.DELETE: запросыDELETE.DESCRIBE: запросыDESCRIBE,DESCRIBE INPUT,DESCRIBE OUTPUTиSHOW.EXPLAIN: запросыEXPLAIN.INSERT: запросыINSERTиCREATE TABLE AS.SELECT: запросыSELECT.
clientTags(необязательно): список тегов. Для совпадения каждый тег из этого списка должен присутствовать в списке тегов клиента, связанных с запросом.group(необязательно): регулярное выражение для сопоставления с полным именем resource group, в которую направляется запрос.sessionProperties: отображение (map) со строковыми ключами и значениями. Каждая запись — это имя системного или каталогового свойства и соответствующее значение. Значения должны быть заданы как строки, независимо от их фактического типа данных.
Пример#
Рассмотрим следующий набор требований:
Все запросы, выполняющиеся в resource group
global, должны иметь лимит времени выполнения 8 часов.Все интерактивные запросы направляются в подгруппы группы
global.interactiveи имеют лимит времени выполнения 1 час (более строгий, чем дляglobal).Все ETL-запросы (с тегом ‘etl’) направляются в подгруппы группы
global.pipelineи должны быть настроены с определёнными свойствами для управления поведением записи и свойством каталога hive.
Эти требования можно выразить следующими правилами:
[
{
"group": "global.*",
"sessionProperties": {
"query_max_execution_time": "8h"
}
},
{
"group": "global.interactive.*",
"sessionProperties": {
"query_max_execution_time": "1h"
}
},
{
"group": "global.pipeline.*",
"clientTags": ["etl"],
"sessionProperties": {
"scale_writers": "true",
"hive.insert_existing_partitions_behavior": "overwrite"
}
}
]