Перейти к основному содержимому
Перейти к основному содержимому

Источник словаря Executable Pool

Пул исполняемых процессов позволяет загружать данные из пула процессов. Этот источник не работает с макетами словаря, которым необходимо загружать все данные из источника.

Пул исполняемых процессов работает, если словарь хранится с использованием одного из следующих макетов:

  • cache
  • complex_key_cache
  • ssd_cache
  • complex_key_ssd_cache
  • direct
  • complex_key_direct

Пул исполняемых процессов создаёт пул процессов с указанной командой и поддерживает их работу до их завершения. Программа должна читать данные из STDIN, пока они доступны, и выводить результат в STDOUT. Она может ожидать следующий блок данных в STDIN. ClickHouse не будет закрывать STDIN после обработки блока данных, а при необходимости передаст по каналу очередной фрагмент данных. Исполняемый скрипт должен быть готов к такому способу обработки данных — он должен опрашивать STDIN и оперативно сбрасывать данные в STDOUT.

Пример настроек:

SOURCE(EXECUTABLE_POOL(
    command 'while read key; do printf "$key\tData for key $key\n"; done'
    format 'TabSeparated'
    pool_size 10
    max_command_execution_time 10
    implicit_key false
))

Поля настроек:

SettingDescription
commandАбсолютный путь к исполняемому файлу или имя файла (если каталог программы добавлен в PATH).
formatФормат. Поддерживаются все форматы, описанные в Formats.
pool_sizeРазмер пула. Если для pool_size указано значение 0, то размер пула не ограничен. Значение по умолчанию — 16.
command_termination_timeoutИсполняемый скрипт должен содержать основной цикл чтения-записи. После уничтожения словаря канал закрывается, и у исполняемого файла будет command_termination_timeout секунд на завершение работы, прежде чем ClickHouse отправит процессу-потомку сигнал SIGTERM. Задаётся в секундах. Значение по умолчанию — 10. Необязательный параметр.
max_command_execution_timeМаксимальное время выполнения команды исполняемого скрипта для обработки блока данных. Задаётся в секундах. Значение по умолчанию — 10. Необязательный параметр.
command_read_timeoutТаймаут чтения данных из stdout команды в миллисекундах. Значение по умолчанию — 10000. Необязательный параметр.
command_write_timeoutТаймаут записи данных в stdin команды в миллисекундах. Значение по умолчанию — 10000. Необязательный параметр.
implicit_keyИсполняемый файл источника может возвращать только значения, а соответствие запрошенным ключам определяется неявно по порядку строк в результате. Значение по умолчанию — false. Необязательный параметр.
execute_directЕсли execute_direct = 1, то command будет искаться внутри папки user_scripts, заданной параметром user_scripts_path. Дополнительные аргументы скрипта можно указать, используя в качестве разделителя пробел. Пример: script_name arg1 arg2. Если execute_direct = 0, command передаётся как аргумент для bin/sh -c. Значение по умолчанию — 1. Необязательный параметр.
send_chunk_headerУправляет тем, нужно ли отправлять количество строк перед отправкой фрагмента данных в процесс. Значение по умолчанию — false. Необязательный параметр.

Этот источник словаря может быть настроен только через XML-конфигурацию. Создание словарей с исполняемым источником через DDL отключено, иначе пользователь БД смог бы выполнять произвольные исполняемые файлы на узле ClickHouse.