Менеджеры 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"
    }
  }
]