Saltar al contenido principal
Executable pool permite cargar datos desde un conjunto de procesos. Este origen no funciona con diseños de diccionario que necesitan cargar todos los datos desde el origen. Executable pool funciona si el diccionario se almacena con uno de los siguientes diseños:
  • cache
  • complex_key_cache
  • ssd_cache
  • complex_key_ssd_cache
  • direct
  • complex_key_direct
Executable pool iniciará un conjunto de procesos con el comando especificado y los mantendrá en ejecución hasta que finalicen. El programa debe leer datos de STDIN mientras estén disponibles y escribir el resultado en STDOUT. Puede esperar el siguiente bloque de datos en STDIN. ClickHouse no cerrará STDIN después de procesar un bloque de datos, sino que enviará otro fragmento de datos cuando sea necesario. El script ejecutable debe estar preparado para esta forma de procesar los datos: debe sondear STDIN y vaciar los datos en STDOUT lo antes posible. Ejemplo de configuración:
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
))
Campos de configuración:
ConfiguraciónDescripción
commandLa ruta absoluta al archivo ejecutable, o el nombre del archivo (si el directorio del programa está incluido en PATH).
formatEl formato de archivo. Se admiten todos los formatos descritos en Formats.
pool_sizeTamaño del conjunto. Si se especifica 0 como pool_size, no habrá restricciones en el tamaño del conjunto. El valor predeterminado es 16.
command_termination_timeoutEl script ejecutable debe contener un bucle principal de lectura y escritura. Después de que se destruya el diccionario, la tubería se cierra y el archivo ejecutable tendrá command_termination_timeout segundos para apagarse antes de que ClickHouse envíe la señal SIGTERM al proceso hijo. Se especifica en segundos. El valor predeterminado es 10. Opcional.
max_command_execution_timeTiempo máximo de ejecución del comando del script ejecutable para procesar un bloque de datos. Se especifica en segundos. El valor predeterminado es 10. Opcional.
command_read_timeoutTiempo de espera para leer datos de stdout del comando, en milisegundos. El valor predeterminado es 10000. Opcional.
command_write_timeoutTiempo de espera para escribir datos en stdin del comando, en milisegundos. El valor predeterminado es 10000. Opcional.
implicit_keyEl archivo del origen ejecutable puede devolver solo valores, y la correspondencia con las claves solicitadas se determina implícitamente por el orden de las filas en el resultado. El valor predeterminado es false. Opcional.
execute_directSi execute_direct = 1, command se buscará dentro de la carpeta user_scripts especificada por user_scripts_path. Se pueden especificar argumentos adicionales del script usando espacios en blanco como separador. Ejemplo: script_name arg1 arg2. Si execute_direct = 0, command se pasa como argumento a bin/sh -c. El valor predeterminado es 1. Opcional.
send_chunk_headerControla si se debe enviar el recuento de filas antes de enviar un fragmento de datos al proceso. El valor predeterminado es false. Opcional.
Este origen de diccionario solo puede configurarse mediante configuración XML. La creación de diccionarios con origen ejecutable mediante DDL está deshabilitada; de lo contrario, el usuario de la DB podría ejecutar cualquier binario arbitrario en el nodo de ClickHouse.
Última modificación el 10 de junio de 2026