Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

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

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.

Navigation