Presto 0.100 Documentation

3.1. 队列配置

3.1. 队列配置

排队规则定义在一个Json文件中,用于控制能够提交给Presto的查询的个数,以及每个队列中能够同时运行的查询的个数。用config.properties中的query.queue-config-file来指定Json配置文件的名字。

排队规则如果定义了多个队列,查询会按顺序依次进入不同的队列中。排队规则将按照顺序进行处理,并且使用第一个匹配上的规则。在以下的配置例子中,有5个队列模板,在user.${USER}队列中,${USER}表示着提交查询的用户名。同样的${SOURCE}表示提交查询的来源。

同样有五条规则定义了哪一类查询会进入哪一个队列中:

所有这些规则实现了这样的策略,bob是一个管理员,而其他用户需要遵循以下的限制:

  • 每个用户最多能同时运行5个查询。
  • big查询同时只能运行一个
  • 最多能同时运行10个pipeline来源的查询。
  • 最多能同时运行100个非big查询
{
  "queues": {
    "user.${USER}": {
      "maxConcurrent": 5,
      "maxQueued": 20
    },
    "pipeline": {
      "maxConcurrent": 10,
      "maxQueued": 100
    },
    "admin": {
      "maxConcurrent": 100,
      "maxQueued": 100
    },
    "global": {
      "maxConcurrent": 100,
      "maxQueued": 1000
    },
    "big": {
      "maxConcurrent": 1,
      "maxQueued": 10
    }
  },
  "rules": [
    {
      "user": "bob",
      "queues": ["admin"]
    },
    {
      "session.experimental_big_query": "true",
      "source": ".*pipeline.*",
      "queues": [
        "user.${USER}",
        "pipeline",
        "big"
      ]
    },
    {
      "source": ".*pipeline.*",
      "queues": [
        "user.${USER}",
        "pipeline",
        "global"
      ]
    },
    {
      "session.experimental_big_query": "true",
      "queues": [
        "user.${USER}",
        "big"
      ]
    },
    {
      "queues": [
        "user.${USER}",
        "global"
      ]
    }
  ]
}