Перейти к основному содержанию
Executable pool позволяет загружать данные из пула процессов. Этот источник не работает со структурами словарей, для которых требуется загружать все данные из источника. Executable pool работает, если словарь хранится с использованием одной из следующих структур:
  • cache
  • complex_key_cache
  • ssd_cache
  • complex_key_ssd_cache
  • direct
  • complex_key_direct
Executable pool запускает пул процессов с указанной командой и оставляет их запущенными, пока они не завершатся. Программа должна читать данные из 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
))
Поля настроек:
НастройкаОписание
commandАбсолютный путь к исполняемому файлу или имя файла (если каталог программы указан в PATH).
formatФормат файла. Поддерживаются все форматы, описанные в разделе Форматы.
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-конфигурацию. Создание словарей с executable source через DDL отключено, иначе пользователь БД смог бы выполнять произвольный бинарный файл на узле ClickHouse.
Последнее изменение 10 июня 2026 г.