Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Origen de diccionario Executable Pool

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ón Descripción
command La ruta absoluta al archivo ejecutable, o el nombre del archivo (si el directorio del programa está incluido en PATH).
format El formato de archivo. Se admiten todos los formatos descritos en Formats.
pool_size Tamañ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_timeout El 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_time Tiempo 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_timeout Tiempo de espera para leer datos de stdout del comando, en milisegundos. El valor predeterminado es 10000. Opcional.
command_write_timeout Tiempo de espera para escribir datos en stdin del comando, en milisegundos. El valor predeterminado es 10000. Opcional.
implicit_key El 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_direct Si 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_header Controla 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.

Navigation